2012-06-09 2 views
0

컨트롤러에서 UI로 크기가 800MB를 넘는 파일 스트림으로 파일을 보내려고합니다.ASP.NET MVC 3의 Controller.Read()와 같습니다.

컨트롤러에서 브라우저로 파일 스트림을 보낼 방법이 있습니까 청크입니다.

때문에 나는

File(downloadStream, "application/octet-stream", fileName); 

가 시스템 메모리를 복용하고 UI에 보낼 수 없습니다 사용하는 경우.

파일 스트림을 청크로 보내는 가장 효율적인 방법을 제안하십시오.

답변

1

FilePathResult를 사용하십시오. FilePathResult는 HttpResponse.TransmitFile을 사용하여 파일을 http에 직접 씁니다. 이 방법은 파일을 서버의 메모리에 버퍼링하지 않으므로 더 큰 파일을 전송할 때 더 좋은 옵션이어야합니다.

체크 아웃 내가 사용한다고 가정하면 그 구현 here

+0

FilestreamResult 즉, 공공 Filestreamresult 다운로드() {반환 파일 (downloadStream, "응용 프로그램/octet-stream을"fileName에); }, @ ​​Html.ActionLink ("FileDownload", "Download", new {file = item.FileName, Guid = item.DocumentGuID})/text와 같은 버튼을 클릭하여 Download()를 호출 할 수 있습니까? 10); ??? – user1400915

+0

왜 전화 할 수 없습니까? 일부 컨트롤러에서는 일부 동작 방법이 다운로드됩니다. 액션 링크를 렌더링하는 동안 기본적으로 네 가지를 제공합니다. 링크의 내부 텍스트, 컨트롤러 이름, 액션 메소드 이름, 매개 변수입니다. 네가 왜 그걸 부를 수 없는지 나는 모르겠다. 코드에서 호출하려고 했습니까 ??? – Anand