2

当我从 MVC 操作方法返回 FilePathResult 时,会发生以下哪种情况(如果重要,假设结果指向的文件非常大):

  1. 该文件被完整地加载到服务器的内存中,然后发送到客户端。
  2. 该文件以某种方式流式传输到客户端,以使其在任何时候都不会完全加载到服务器的内存中。
  3. 别的东西。

如果答案是 1,是否可以通过返回不同类型的结果来像 2 一样发送文件?

4

1 回答 1

2

更新:FilePathResult使用response.TransmitFile “将指定文件直接写入 HTTP 响应输出流,而不将其缓冲在内存中。”。这是 MVC 的源代码

FileStreamResult您可以使用该类将数据流回:

 return new FileStreamResult(stream, "application/pdf")
 {
     result.FileDownloadName = "somefile.pdf";
 };

或者您可以像这样重定向到文件:

 return Redirect("somefile.pdf");
于 2013-05-30T21:01:22.830 回答