2012-05-15 6 views
3

파일을 만들어 서버에 저장하지 않고 다운로드하려고합니다.서버에 파일을 만들지 않고 다운로드 할 링크를 제공하십시오.

public ActionResult DownloadZip(Guid id){ 
    using (ZipFile zip = new ZipFile()) 
    { 
     zip.Password = "123456!"; 
     // GenareteString(); 
     // add string to file 
     // save zip 

     //return zip to user 
    } 
    return View(); 
} 

수행하는 방법이

나는 당신이 사람을 역할을하는 서버가 필요 DotNetZip

+0

가상을 만들기 위해이 파일을 모두 사용해 보았지만 서버를 유지 관리하는 데 필요한 모든 기능이 없었습니다. – Mediator

+0

"ZipFile"을 메모리에 만들 수 있는지 여부에 따라 다릅니다. 링크는 [HTTP 처리기] (http://msdn.microsoft.com/en-us/library/bb398986.aspx)를 가리키며 생성 된 파일로 응답합니다. – Filburt

+0

zip.Save (outputStream); -하지만이 outputStream을 만드는 방법을 모르겠습니다. – Mediator

답변

4

당신은 return View()를 사용하지 않지만 뭔가있다.

Controller.File()Controller.View() 도우미 함수는 모두 ActionResult에서 파생 된 반환 유형입니다.

+0

myStream을 만드는 방법은 무엇입니까? – Mediator

+0

어쨌든 원한다. 나는 너에게 ZIP의 창조가 풀린 줄 알았다. (Memory) Stream이나'byte [] '버퍼를 사용할 수 있습니다. –

+0

MemoryStream outputStream에 감사드립니다. – Mediator

-3

를 사용합니다. "서버"메커니즘없이 인터넷을 통해 기능을 작성하여 다른 사람에게 보낼 수는 없습니다. 약간의 오버로드를 사용할 수 있습니다

return File(myMemoryStream,       // zipped data 
    System.Net.Mime.MediaTypeNames.Application.Zip, // "application/zip" 
    "default.zip");         // suggested download name 

:

+1

파일을 저장하지 않고 서버에 배치하는 것이 완벽하게 가능합니다. HTTP 처리기를 사용하여 메모리에 작성된 스트림을 제공하기 만하면됩니다. – Filburt

+0

물론 가능합니다. 응답에 필요한 내용 유형 헤더 만 있으면됩니다. – Alex