2013-09-04 3 views
2

빠른 질문을 사용하는 사용자가 사용할 수있는 "모두 다운로드"옵션을 사용하면 세부 정보보기에서 모든 첨부 파일을 다운로드 할 수있는 옵션을 사용자에게 제공하고 싶습니다.Html.ActionLink

이 하나의 첨부 작동 ...

@foreach (var file in Model.Attachments) 
      { 
       <div class="margin-bottom-25"> 
        <a href="?"> 
         <img src="~/Images/pdf.gif" /></a> 
        <div> 
         <strong>@file.FileName</strong> 
         <span>@file.FileSizeKB KB</span> 

         @Html.ActionLink("Download", "ViewDocument", new 
          { 
           messageId = file.MessageId.ToString("N"), 
           documentId = file.ID.ToString("N"), 
           documentType = file.AttachmentType.ToString(), 
           download = true 
          }) 
        </div> 
       </div> 

      } 

그러나 나는 사용자에게 "모두 다운로드"링크를 선택 할 수있는 기능을 제공 할

....? 똑바로 들리 겠지만, 링크 안에 foreach를 넣으려고했는데 아무런 주자가 없었습니다 ..... 어떤 생각이 감사합니까? (asp.net MVC 4 응용 프로그램, razor2보기 사용)

+3

동시에 모든 파일을 다운로드해야하는 경우 최선의 방법은 모든 파일을 ZIP 파일로 다운로드하는 것입니다. 다중 부분 다운로드가 매우 잘못 지원됩니다. –

+0

아이디어는 이러한 첨부 파일이 매우 작을 것이라고 말합니다. 다운로드를 허용하기 전에 Zip 파일에 모든 파일을 배치하는 방법을 조사해야한다는 말입니까? – mkell

+0

예, 두렵습니다. –

답변

1

모든 문서를 반복하고 가장 잘 지원되는 zip 파일을 구성한 다음 나중에 사용자에게 보냅니다.

컨트롤러에서 다른 동작을 구현하기 만하면 DownloadAll이라고 부릅니다. Model.Attachments의 모든 파일을 반복 한 다음 ViewDocument에있는 Download처럼 반환하는 ZIP 패키지에 추가하십시오.

.NET 4.5를 사용하는 경우 ZipPackage을 사용하는 경우 ZipArchivehttp://msdn.microsoft.com/en-us/library/hh137435을 확인하십시오. 자세한 내용은 How do I ZIP a file in C#, using no 3rd-party APIs?을 참조하십시오.

+0

코드가 어떻게 보일지 생각해 볼 수 있습니까? 아직 여기에서 배우고 있습니까? – mkell

+0

감사합니다. 감사합니다 ... – mkell

0

Content-Type: multipart-mixed 

의 헤더를 출력하여 예를 들어, "다중"콘텐츠 형식을 사용하여 파일을 출력 한 후 적절한 개별적으로 각 파일을 출력하여 것이이 문제를 해결하는 '올바른'방법 경계. 그러나이 문제에 대한 지원은 매우 제한적입니다. similar question here 브라우저 지원은 매우 약한 것으로 나타났습니다.

그러므로 내 원래 의견에 따르면 가장 좋은 방법은 DotNetZip과 같은 라이브러리를 사용하여 모든 파일을 단일 ZIP 파일로 결합하여 사용자가이 파일을 다운로드 할 수있게하는 것입니다.