2013-05-30 44 views
1

當我從一個MVC操作方法,這會出現以下情況返回FilePathResult(假設,如果它的事項,該文件,其結果點是非常大):ASP.NET MVC:文件響應流?

  1. 文件獲取加載其整個存儲到服務器的內存中,然後發送到客戶端。
  2. 該文件以某種方式流式傳輸到客戶端,使得它不會被完全加載到服務器的內存中。
  3. 別的東西。

如果答案是1,是否可以通過返回不同類型的結果來發送文件,如2所示? 「

回答

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"); 
+0

我敢肯定FilePathResult沒有做重定向 - 正如msdn文檔所說,它「將文件的內容發送到響應」。 – Duncan

+0

@鄧肯謝謝,我修復了答案 – bendytree

+0

實際上,'FileStreamResult'似乎不能直接流式傳輸。它仍然將整個文件複製到內存中。 –