2011-12-29 6 views
1

저는 압축 파일을 만들고 다운로드 할 수있는 파일을 반환하고 싶지만 온라인으로 찾은 몇 가지 예제를 시도해도 리턴 파일 부분을 파악할 수 없습니다.

이것은 내가 지금 사용하는 코드입니다. $.post()이 없어도 작동하지만 jquery와 함께 작동해야합니다. 모든 아이디어를 환영합니다

$('.zipFiles').live('click', function() { 
      $.post('/Home/ZipFiles'); 
}); 


//return a file 
public FileResult ZipFiles() 
    { 
     var filesToZip = Session["DownloadQue"] as List<string>; 
     var savedZipFile = Server.MapPath("~/App_Data/") + DateTime.Now.Minute + ".zip"; 

     if (filesToZip != null && filesToZip.Count > 0) 
      using (var zip = new ZipFile(savedZipFile)) 
      {      
       foreach (string item in filesToZip) 
       { 
        var path = Server.MapPath(Path.Combine("~/Pics/", item)); 
        zip.AddFile(path, @"\cf"); 
       } 

       zip.Comment = "this was made online";      
       zip.Save(); 
      } 

     return File(savedZipFile, System.Net.Mime.MediaTypeNames.Application.Zip); 
    } 
+0

ajax를 사용하여 파일을 다운로드 할 수 없습니다 – zerkms

+1

허용 된 답변없이 25 개의 질문이 있습니다. 대가로 존경심을 보이지 않으면 서 너를 도둑질하는 사람들이 싫어? –

+0

@Rune FS, 당신은 내가 올바른 답변을 얻지 못했다고 생각한 적이 있습니까? 나는 대답을 받아들이지 않고, 단지 반을 받아 들인 다음 동일한 문제가있는 다른 누군가가 해결책으로 그 반 때문에 투쟁에 나섰다. 그래서 나는 다른 사용자들에게 존경심을 느낀다. 나는 그것이 당신에게 대답하는 것의 enogh이기를 바란다. –

답변

2

jQuery를 통해 작업의 파일 또는 결과를 반환 할 수 있습니다. 여기에 귀하의 코드 /home/zipfiles 반환합니다. 지퍼 내용과 나는 당신이/인쇄 우편 번호를 표시하고 싶지 않아요.

$('.zipFiles').live('click', function() { 
      $.post('/Home/ZipFiles',"",function(data){ 
       alert(data); 
      }); 
}); 

는 파일이 시도 다운로드하려면

$('.zipFiles').live('click', function() { 
    window.location.href="/home/zipfiles";    
}); 
+0

thats 천재. 고마워요. –

1

언급 한대로 AJAX를 통해 파일을 다운로드 할 수 없으므로 약간의 해결 방법이 필요합니다.

먼저 zip 파일을 반환하지 말고 조치 방법에서 guid (또는 다른 임의의 이름이지만 고유 한 이름)를 생성하고 서버에 저장하십시오. 조치 메소드는이 파일에 대한 URL을 리턴해야합니다.

실제로 파일을 다운로드하려면 $ .post에 성공 콜백을 사용하십시오. 콜백에서 URL을 구문 분석 한 다음 해당 URL을 가리키는 새 창/iframe을 엽니 다.

+0

+1이 좋은 생각입니다 –

0

나는 ... 기준이 $ 갔지 또는 $ .post를 사용하는 것입니다

만 사용 "$ ('양식'을 알고) .submit(); " 내가 찾고 있던 것이고 나를 위해 완벽하게 일했습니다.

사용자가 동일한 페이지에서 나가고 파일 결과를 다운로드합니다.

관련 문제