2013-06-30 3 views
0

이미지 URL 경로에서 압축 된 이미지를 다운로드해야합니다. 이미지 다운로드가 명확합니다. 그러나 문제는 프롬프트 윈도우가 나타나지 않는다는 것입니다. 즉 FileStreamResult는 아무 것도 반환하지 않습니다.왜 FileStreamResult 결과가 없습니까?

Asp.NET MVC 컨트롤러 포스트 방법 :

내 문제가 반환 FileStreamResult가 작동하지 않는됩니다
[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 
    } 
} 

- 왜? 나는 너무 많이 노력했지만 succided하지 않았다. string [] name의 값은 Ajax \ JqueryUI post 메서드를 사용하여 얻을 수 있습니다. 실제로 값은 checkBox의 값입니다.

+0

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)) }); 
} 

원 화상 부하

, 나 이미지를 다시로드 이벤트 후에이

자바 스크립트 같은 설정.

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

예, GetLogoImage 및 GetLogoImage2 기능이 있습니다. GetLogoImage 정리 작업은 이전 코드입니다.