当用户点击下载链接时,我使用以下代码向用户传送文件。为了安全起见,我不能直接链接到文件,所以设置它来解码 url 并传输文件。
一段时间以来它一直运行良好,但最近我开始遇到文件将开始下载的问题,但没有迹象表明文件有多大。
因此,当下载应该停止时,它却没有停止。
该文件大约有 99mb,但当我下载它时,浏览器一直在下载超过 100mb。我不知道它在下载什么,但如果我不取消它,它就不会停止。
所以,我的问题是,是否有 TransmitFile
的替代方法,或者是否有一种方法可以确保文件的大小也被发送,以便它在正确的时间停止?
代码如下:
string filename = Path.GetFileName(url);
context.Response.Buffer = true;
context.Response.Charset = "";
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = "application/x-rar-compressed";
context.Response.AddHeader("content-disposition", "attachment;filename=" + filename);
context.Response.TransmitFile(context.Server.MapPath(url));
context.Response.Flush();
我不想使用 WriteFile
,因为我不想将整个文件加载到内存中,因为它太大了。
谢谢。
最佳答案
我想我已经找到了答案。
我添加了以下代码,现在,至少对我来说,它报告了正确的文件大小并按预期工作。
FileInfo OutFile = new FileInfo(context.Server.MapPath(url));
long filesize = OutFile.Length;
....
context.Response.AddHeader("Content-Length", filesize.ToString());
关于file - 响应传输文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1837392/