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'似乎不能直接流式传输。它仍然将整个文件复制到内存中。 –