关于asp.net Response流下载文件 遇到自带多线程下载器的浏览器出现的问题

cctv108 2012-03-22 04:12:14
源码如下:TempPath 是文件的路径
FileInfo DownloadFile = new FileInfo(TempPath);
TempPath = TempPath.Substring(TempPath.LastIndexOf("\\") + 1);
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.Buffer = true;
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode (TempPath, System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
Response.WriteFile(DownloadFile.FullName);
Response.Flush();
Response.Clear();
Response.Close();

现在一些主流的浏览器像360,搜狗等都自己带有多线程下载,这就造成每次执行我的下载业务逻辑时浏览器总是同时发出很多个线程,造成程序重复访问页面,这个问题怎么解决?
...全文
175 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwbox 2012-03-29
  • 打赏
  • 举报
回复
http多线程下载是依靠 http head中的Range:bytes=1024- 这种断点续传标识来实现的。
你如果不想让用户断点续传,你就判断一下这个头就好了,有这个头的就不执行就好了。

这个说的还不明白么,判断Range有值就return。
cctv108 2012-03-29
  • 打赏
  • 举报
回复
这个网址上的东西,我看过了并不适合我的问题。本人比较愚钝,能不能说的再清楚些?
hwbox 2012-03-22
  • 打赏
  • 举报
回复
http://blog.csdn.net/fhbcn/article/details/3789035
这个说的很明白,你看下吧。
hwbox 2012-03-22
  • 打赏
  • 举报
回复
http多线程下载是依靠 http head中的Range:bytes=1024- 这种断点续传标识来实现的。
你如果不想让用户断点续传,你就判断一下这个头就好了,有这个头的就不执行就好了。

另外也可以根据这个值,改一下程序让程序支持多线程下载,随你自己意好了。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧