asp 다중 파일 다운로드



Articolo del 8 Febbraio 2020

CheckBoxList의 DataBound 이벤트를 사용하여 각 항목의 Text 속성을 서식을 지정하여 파일의 전체 경로를 제거했습니다. 양식이 다시 게시된 경우 선택한 항목은 목록 저장되고 동일한 코드가 이전 파일을 지우고 선택한 파일을 임시 폴더에 복사한 다음 zip 아카이브를 생성합니다. 마지막으로 응답의 콘텐츠 유형 과 처리가 적절하게 설정되고 아카이브가 클라이언트로 전송됩니다. 다음의 간단한 예제에서는 ASP.NET MVC 및 웹 양식에서 ZipFile.CreateFromDirectory 메서드를 사용하는 방법을 보여 줍니다. 두 경우 모두 선택할 수 있는 파일의 선택을 나타내는 확인란 목록이 사용자에게 표시됩니다. 양식을 제출하면 해당 파일만 하나의 zip 파일로 패키징되어 다운로드됩니다. 이 짧은 문서에서는 여러 파일 다운로드가 활성화되지 않는 이유에 대해 설명하고 .NET 프레임워크 코드만 사용하여 ASP.NET mVC 및 Web Forms 시나리오모두에서 솔루션을 제공하는 해결 방법을 제시했습니다. 해결 방법은 파일을 하나의 아카이브 파일로 압축하고 대신 다운로드하는 것입니다. 다양한 타사 zip 라이브러리를 사용하여 이 작업을 수행하는 방법을 보여 주는 몇 가지 예가 있습니다. .NET 4.5의 System.IO.Compression, 특히 .zip 파일을 만들고 작업할 수 있는 ZipFile 클래스에 몇 가지 새로운 작업이 도입될 때까지 .NET 프레임워크에서 이 작업을 위해 특별히 설계된 것이 없었기 때문입니다. 파일 뒤의 코드에서 Page_Load 메서드는 MVC 예제의 Action 메서드와 매우 유사합니다. 페이지가 다시 게시되지 않은 경우 파일 목록을 가져와 체크박스리스트에 바인딩됩니다.

안녕하세요, 저는 웹 응용 프로그램을 가지고 . 그것은 여러 파일을로드 다운 할 수 있어야하는 사용자를 클릭 다운로드 버튼이 있습니다. 나는 이것에 꽤 새로운, 그래서 나와 함께 곰. 내 코드는 다음과 같습니다. 여러 파일을 선택하더라도 하나의 파일만 다운로드합니다. 즉, 갈 수있는 방법이 아니다, 당신은 하나 선택 된 모든 파일 서버 측면을 압축하고 만 zip 파일을 다운로드 하거나 여러 다운로드 창을 열려면 클라이언트 측면 코드를 사용하려고 할 수 있습니다,하지만 그 경우에 나는 일부 브라우저가 잠재적으로 자신의 팝업 차단으로 팝업을 차단 할 수 있다고 생각합니다. Zip / Arj는 파일을 다운로드하는 데 적합합니다. 그러나 하나의 요청에 더 많은 파일을 보내야하는 몇 가지 작업이 있습니다(예: 작은 이미지가 많은 HTML 페이지)가 미리 보기로 표시됩니다. 이 작업은 일반적으로 HTML 페이지에 대한 하나의 요청과 외부 이미지에 대한 많은 요청(10개 이상)으로 조정됩니다. http 요청의 10분의 1에 대한 클라이언트-서버 통신은 서버에 대한 추가 오버헤드, 추가 통신 시간이 필요하며, 회선 bandwith를 소모합니다.

각 이미지 미리 보기에 대한 인증이 필요한 경우 상황이 더 악화됩니다 – 각 http 요청에 대해 분리된 사용자 데이터베이스에 대한 인증 요청의 10분의 1을 수행해야 합니다. 사용자 선택은 파일 매개 변수에 캡처됩니다. 코드는 archive.zip이라는 파일이 이전 작업에서 존재하고 삭제되는지 확인합니다. 그런 다음 temp라는 폴더가 기존 파일에서 지워집니다. 다음으로 선택한 파일이 소스 디렉터리에서 임시 폴더로 복사됩니다.