首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >响应TransmitFile

响应TransmitFile
EN

Stack Overflow用户
提问于 2009-12-03 11:13:30
回答 1查看 4.4K关注 0票数 3

我有以下代码,当用户单击下载链接时,将文件传递给他们。出于安全考虑,我不能直接链接到文件,所以这是为了解码url并传输文件而设置的。

它已经正常工作了一段时间,但最近我开始遇到问题,文件将开始下载,但没有迹象表明文件有多大。

由于这一点,当下载应该停止时,它没有。

文件大小约为99mb,但当我下载它时,浏览器一直在下载超过100mb的内容。我不知道它正在下载什么,但如果我不取消它,它就不会停止。

所以,我的问题是,有没有一种替代TransmitFile的方法,或者有一种方法来确保发送文件的大小,以便它在正确的时间停止?

代码如下:

代码语言:javascript
复制
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,因为我不想把整个文件加载到内存中,因为它太大了。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2009-12-03 11:56:54

我想我已经找到答案了。

我添加了以下代码,现在,至少对我来说,它报告了正确的文件大小并按预期工作。

代码语言:javascript
复制
FileInfo OutFile = new FileInfo(context.Server.MapPath(url));
long filesize = OutFile.Length; 
....
context.Response.AddHeader("Content-Length", filesize.ToString());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1837392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档