asp net mvc 파일 다운로드

다운로드 링크를 클릭하고 당신은 아래와 같이 다운로드 상자를 얻을 것이다 (참고 : 나는 IE9를 사용하고 있습니다) 공공 FileResult 다운로드 (문자열 ID) { int fid = Convert.ToInt32 (id); var 파일 = objData.GetFiles (); 문자열 파일 이름 = (f.FileId = = fid 선택 f.FilePath). 첫 번째(); 문자열 내용유형 = « 응용 프로그램 / PDF »; 파일 매개 변수는 //1입니다. 파일 서버의 파일 경로 //2. 콘텐츠 유형 MIME 유형 //3. 브라우저 반환 파일 (파일 이름, contentType, »Report.pdf »)에 의해 저장 파일에 대 한 매개 변수; } 2단계: 프로젝트에서 새 폴더를 추가하고 이름을 `파일`로 지정합니다. PDF 파일 몇 개 추가합니다. 공개 작업결과 인덱스() { var 파일 = objData.GetFiles(); 반환 보기(파일); } 사용자에게 파일을 다시 전달하는 방법은 주로 파일을 저장한 방법에 따라 달라집니다. 데이터베이스에 저장되어 있는 경우 일반적으로 파일을 사용자에게 다시 스트리밍합니다. 디스크에 저장된 경우 하이퍼링크를 제공하거나 다시 스트리밍할 수 있습니다. 브라우저로 파일을 스트리밍해야 할 때마다 이전 예제에서 지금까지 사용된 View() 메서드 대신 File() 메서드의 오버로드 중 하나를 사용합니다. File() 메서드에는 파일경로결과, FileContentResult 및 FileStreamResult의 3가지 반환 유형이 있습니다. 첫 번째는 디스크에서 직접 파일을 스트리밍합니다.

두 번째는 바이트 배열을 클라이언트로 다시 보내고 세 번째는 생성되고 열린 Stream 개체의 내용을 보냅니다. 9. « Download.cshtml »에서 아래 코드를 열고 추가합니다. @foreach(모델의 var 항목) {

@Html.DisplayFor(모델항목 => 항목) 항목입니다. FileId) @Html.DisplayFor(모델항목 => 항목) FileName) @Html.ActionLink(« 다운로드 », « 다운로드 », 새 { ID = 항목). FileId })

} 업로드된 파일을 데이터베이스에 저장할 때 파일콘텐츠 필드에 바이트 배열을 보냈습니다. 이를 다시 수행해야 할 때 다시 바이트 배열로 됩니다. 계속 유지한 경우 이는 FileContentResult를 반환하는 File()의 두 오버로드 중 하나를 사용할 수 있음을 의미합니다. 파일의 이름을 의미있게 하려면 바이트 배열, 마임 형식 및 파일 이름인 3개의 인수를 사용하는 오버로드를 사용합니다. 컨트롤러 작업 내에서 ADO.NET 기능합니다.

우리 모두가 알다시피, 이것은 단순히 수행되지 않습니다. 데이터베이스 액세스 코드는 모델 내부의 데이터 액세스 계층에 속합니다. 그러나 이 코드는 업로드된 파일을 데이터베이스에 저장하려는 경우 사람들에게 출발점을 제공해야 합니다. 우선, 데이터베이스 (FileTest)를 만들고 테이블을 추가했습니다 : FileStore : 내 예에서 파일 스토어 : 내 예에서 나는이 도우미 방법을 사용했기 때문에 기억할 수없는 어딘가에 발견했습니다. 이것은 디스크에서 직접 파일을 스트리밍하는 데 사용됩니다 : 6. 그리고 뿐만 아니라 « 다운로드 »작업 결과에 대해 동일한 작업을 수행합니다. 파일 다운로드는 웹 응용 프로그램에서 원하는 일반적인 기능의 일종입니다. 웹 폼에서이 기능에 사용할 코드 조각을 제공하는 게시물 http://www.codeproject.com/Tips/663277/File-Download-on-ImageButton-or-Button-Click 이미 있습니다. ASP.NET MVC3와 함께 상자밖으로 나오는 FileResult 작업은 ASP.NET MVC 응용 프로그램에서 파일을 다운로드하기 위한 추상화를 쉽게 제공합니다. 그렇다면 FilePathResult와 FileStreamResult의 차이점은 무엇이며 어떤 것을 사용해야 합니까? 주요 차이점은 FilePathResult httpResponse.TransmitFile을 사용 하 여 http 출력에 파일을 작성 합니다. 이 메서드는 서버의 메모리에 있는 파일을 버퍼링하지 않으므로 더 큰 파일을 보내는 것이 좋습니다.

그것은 매우 데이터 리더 또는 데이터 집합을 사용 하 여 의 차이 처럼.