file - 响应传输文件

标签 file size transmitfile

当用户点击下载链接时,我使用以下代码向用户传送文件。为了安全起见,我不能直接链接到文件,所以设置它来解码 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/

相关文章:

c# - Response.TransmitFile 没有下载,也没有抛出错误

file - 如何将我的 SSH 公钥发送给某人?

python - 使用 `sys.getsizeof(Var)` 方法与 `ctypes.sizeof(Var)` 的 python 大小的 ctypes

windows - 批处理基础知识: Where should I start?

r - 修改色标图例指南以匹配 ggplot2 中的线条大小

html - 如果屏幕尺寸小于 480px (iPhone 4),如何隐藏图像?

format - STM32以ASCII格式传输命令

c# - TransmitFile 缺少文件末尾的单个字节

c++ - 'ios' : is not a class or namespace name

javascript - Gulp Concat 没有输出文件