1
當我從一個MVC操作方法,這會出現以下情況返回FilePathResult(假設,如果它的事項,該文件,其結果點是非常大):ASP.NET MVC:文件響應流?
- 文件獲取加載其整個存儲到服務器的內存中,然後發送到客戶端。
- 該文件以某種方式流式傳輸到客戶端,使得它不會被完全加載到服務器的內存中。
- 別的東西。
如果答案是1,是否可以通過返回不同類型的結果來發送文件,如2所示? 「
當我從一個MVC操作方法,這會出現以下情況返回FilePathResult(假設,如果它的事項,該文件,其結果點是非常大):ASP.NET MVC:文件響應流?
如果答案是1,是否可以通過返回不同類型的結果來發送文件,如2所示? 「
UPDATE:FilePathResult
使用response.TransmitFile其中」將指定文件直接寫入HTTP響應輸出流,而不將其緩衝在內存中「。 Here's the source code for MVC。
可以回用FileStreamResult
類流數據:
return new FileStreamResult(stream, "application/pdf")
{
result.FileDownloadName = "somefile.pdf";
};
或者你可以重定向到像這樣的文件:
return Redirect("somefile.pdf");
我敢肯定FilePathResult沒有做重定向 - 正如msdn文檔所說,它「將文件的內容發送到響應」。 – Duncan
@鄧肯謝謝,我修復了答案 – bendytree
實際上,'FileStreamResult'似乎不能直接流式傳輸。它仍然將整個文件複製到內存中。 –