c# 파일 여러개 다운로드

Pubblicato il

포럼에 여러 파일 다운로드 코드가 첫 번째 파일만 보내는 이유를 묻는 질문이 자주 나타납니다. 일반적으로 코드는 파일 컬렉션을 반복하고 Response.TransmitFile 또는 MVC의 FileResult를 사용하여 각 파일을 클라이언트에 디스패치하는 루프로 구성됩니다. 이것이 작동하지 않는 이유는 기본적으로 불가능하기 때문입니다. 보안상의 이유로 지원되지 않습니다. 이 시나리오를 사용하도록 설정하는 잠재적 인 악용은 악의적인 웹마스터가 요청된 파일 외에 클라이언트에 전체 악성 코드 로드를 보낼 수 있는 드라이브 바이 다운로드라고 합니다. 파일 목록은 ViewBag을 통해 뷰에 전달됩니다: 사용자 선택은 파일 매개 변수에 캡처됩니다. 코드는 archive.zip이라는 파일이 이전 작업에서 존재하고 삭제되는지 확인합니다. 그런 다음 temp라는 폴더가 기존 파일에서 지워집니다. 다음으로 선택한 파일이 소스 디렉터리에서 임시 폴더로 복사됩니다. ZipFile.CreateFromDirectory 메서드는 임시 디렉터리 내용에서 zip 파일을 생성하고 archive.zip으로 저장합니다. 마지막으로 응답에 기록됩니다.

양식은 다음 코드로 구성된 다운로드라는 작업에 게시합니다: 파일은 확인란 세트가 있는 양식 내에 나열됩니다. 단일 링크에 있는 파일입니다. 🙁 소개 이 문서에서는 MVC 5를 사용하여 압축 된 형식으로 여러 파일을 다운로드하는 방법에 대해 설명합니다 ASP.NET. zip 형식으로 여러 파일을 다운로드하는 방법에는 여러 가지가 있지만 이 문서에서는 단계별 프로세스에서 가장 쉬운 방법을 설명합니다. 배경 우리는 서버 경로 또는 네트워크 경로와 같은 대상 위치에 다른 소스에서 zip 형식을 사용하여 여러 파일을 다운로드 할 수 있습니다. 이 문서에서는 네트워크 경로뿐만 아니라 서버 경로에서 파일을 다운로드하는 방법을 볼 수 있습니다. 서버 또는 다른 네트워크 경로에서 다운로드하거나 업로드하는 위치에서 해당 폴더에 대한 권한을 부여해야 합니다. 다음은 압축 된 파일로 여러 파일을 다운로드하는 단계입니다. 1단계 Visual Studio로 이동하여 웹 응용 프로그램을 새로 ASP.NET 관련 프로젝트 이름을 할당합니다. 아래 스크린샷을 따라가세요.

2단계 템플릿 창에서 MVC 템플릿을 선택하고 확인을 클릭합니다. 3 단계 솔루션 탐색기로 이동, 컨트롤러 폴더를 마우스 오른쪽 버튼으로 클릭 하 고 새 컨트롤러를 추가, 아래 화면에 표시 된 대로: 컨트롤러 창열립니다. “MVC 컨트롤러- 비어 있음”을 선택하고 추가를 클릭합니다. 컨트롤러 이름을 지정하고 확인을 다시 클릭합니다. 4단계 파일 정보에 대한 클래스 및 속성을 추가합니다. 다음 스크린샷은 클래스 및 클래스 속성을 추가하는 방법을 설명합니다. 모델 폴더를 마우스 오른쪽 버튼으로 클릭하고 추가를 클릭하고 클래스 옵션을 선택합니다. 마지막으로 이 클래스에 이름을 지정합니다. 5 단계 클래스를 추가 한 후 클래스 속성을 추가합니다.

클래스 속성은 파일 세부 정보를 가져오고 저장하는 데 도움이 됩니다. 이 짧은 문서에서는 ASP.NET 응용 프로그램에서 클라이언트에 여러 파일을 보내려고 할 때 많은 사람들이 직면하는 당황스러운 문제를 살펴보고 해결책을 제공합니다. 다음의 간단한 예제에서는 ASP.NET MVC 및 웹 양식에서 ZipFile.CreateFromDirectory 메서드를 사용하는 방법을 보여 줍니다. 두 경우 모두 선택할 수 있는 파일의 선택을 나타내는 확인란 목록이 사용자에게 표시됩니다. 양식을 제출하면 해당 파일만 하나의 zip 파일로 패키징되어 다운로드됩니다. 해결 방법은 파일을 하나의 아카이브 파일로 압축하고 대신 다운로드하는 것입니다. 다양한 타사 zip 라이브러리를 사용하여 이 작업을 수행하는 방법을 보여 주는 몇 가지 예가 있습니다. .NET 4.5의 System.IO.Compression, 특히 .zip 파일을 만들고 작업할 수 있는 ZipFile 클래스에 몇 가지 새로운 작업이 도입될 때까지 .NET 프레임워크에서 이 작업을 위해 특별히 설계된 것이 없었기 때문입니다.