我的操作将一个文件从磁盘返回到客户端浏览器,目前我有:
public FileResult MediaDownload ()
{
byte[] fileBytes = System.IO.File.ReadAllBytes(Server.MapPath(filePath));
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
这样,它将整个文件加载到内存中,并且速度非常慢,因为下载是在文件加载到存储器后开始的。处理此类文件下载的最佳方法是什么?
感谢
好的,我遇到了这个论坛讨论:http://forums.asp.net/t/1408527.aspx
工作起来很有魅力,正是我所需要的!
更新
遇到这个问题如何在ASP.NET响应中传递大文件?事实证明它要简单得多,下面是我现在的做法:
var length = new System.IO.FileInfo(Server.MapPath(filePath)).Length;
Response.BufferOutput = false;
Response.AddHeader("Content-Length", length.ToString());
return File(Server.MapPath(filePath), System.Net.Mime.MediaTypeNames.Application.Octet, fileName);