2013-06-30 92 views
0

我必須從圖片URL路徑下載壓縮圖片。下載圖像清晰。但問題是沒有出現提示窗口,即FileStreamResult什麼都不返回。爲什麼FileStreamResult沒有結果?

Asp.NET MVC控制器POST方法:

[AcceptVerbs(HttpVerbs.Post)] 
public FileResult Extract(string[] name) 
{ 
    using (ZipFile zip = new ZipFile()) //Zip section 
    { 
     foreach (var item in name) 
     { 
      string exts = Path.GetExtension(item); 
      string strRealname = Path.GetFileName(item); 

      using (WebClient client = new WebClient()) // download Section 
      { 
       client.DownloadFile(item, Server.MapPath("~/upload/") + strRealname + exts); 
      } 

      string filePath = Server.MapPath("~/upload/" + strRealname + exts); 
      zip.AddFile(filePath, Path.GetFileName(filePath)); 
     } 

     string dest = Server.MapPath("~/Album.zip"); 
     zip.Save(dest); 
     byte[] data = System.IO.File.ReadAllBytes(dest); 
     var strm = new FileStream(dest, FileMode.Open); 
     //return new FileStreamResult(strm, "application/zip") 
     return new FileContentResult(data, "application/zip");//Not showing prompt window 
    } 
} 

我的問題是回報FileStreamResult不工作 - 爲什麼?我嘗試了太多但沒有成功。字符串[]名稱的值是通過使用Ajax \ JqueryUI post方法獲得的。實際上,這些值是checkBox的值,它們被檢查。

+0

無法通過ajax下載文件,因爲ajax是異步的,用戶必須允許下載繼續。因此,如果您希望在不重定向當前窗口的情況下發生請求,則必須打開一個新窗口。 –

+0

那我該怎麼辦? – user2536026

+0

我剛剛告訴過你,你必須打開一個新窗口,下載文件的URL。 –

回答

0

這是我如何加載圖像到img標籤。

使用C#mvc。 ImageHelper是我自己的小幫手,名字應該是解釋性的。 從sql數據庫中的字節數組(varbinary(max))中加載它。

public JsonResult GetLogoImage2(){ 
    var image = ImageHelper.ByteArrayToImage(SomeDataBaseEntity.EssLogoImageAsBytes); 
    var png = ImageHelper.ConvertToPng(image); 
    return Json(new { ImgBase64 = Convert.ToBase64String(ImageHelper.ImageToByteArray(png)) }); 
} 

原始圖像負載,我設置這樣

的Javascript一個事件之後重新加載圖像。

$.post("/Account/GetLogoImage2", {}, function (result) { 
    if (result.ImgBase64) { 
    $('#logo_image').html('<img src="data:image/png;base64,' + result.ImgBase64 + '" />'); 
    } 
}, 'json'); 

是的,我有GetLogoImage和GetLogoImage2函數。在清理GetLogoImage方面,這是舊代碼。

相關問題