当我从 MVC 操作方法返回 FilePathResult 时,会发生以下哪种情况(如果重要,假设结果指向的文件非常大):
- 该文件被完整地加载到服务器的内存中,然后发送到客户端。
- 该文件以某种方式流式传输到客户端,以使其在任何时候都不会完全加载到服务器的内存中。
- 别的东西。
如果答案是 1,是否可以通过返回不同类型的结果来像 2 一样发送文件?
当我从 MVC 操作方法返回 FilePathResult 时,会发生以下哪种情况(如果重要,假设结果指向的文件非常大):
如果答案是 1,是否可以通过返回不同类型的结果来像 2 一样发送文件?
更新:FilePathResult
使用response.TransmitFile “将指定文件直接写入 HTTP 响应输出流,而不将其缓冲在内存中。”。这是 MVC 的源代码。
FileStreamResult
您可以使用该类将数据流回:
return new FileStreamResult(stream, "application/pdf")
{
result.FileDownloadName = "somefile.pdf";
};
或者您可以像这样重定向到文件:
return Redirect("somefile.pdf");