博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程 断点续传
阅读量:6034 次
发布时间:2019-06-20

本文共 1755 字,大约阅读时间需要 5 分钟。

Stream iStream = null;byte[] buffer = new Byte[10240];// 缓冲区块10K bytes :int length;            long dataToRead;           string filepath = @"E:\software\SQL Server 2000 Personal Edition.ISO";string filename = System.IO.Path.GetFileName(filepath);try{    // 打开文件
iStream = new FileStream(filepath, FileMode.Open,FileAccess.Read, FileShare.Read);    Response.Clear();    dataToRead = iStream.Length;    long p = 0;    if (Request.Headers["Range"] != null)    {        Response.StatusCode = 206;        p = long.Parse(Request.Headers["Range"].Replace("bytes=", "").Replace("-", ""));    }    if (p != 0)    {        Response.AddHeader("Content-Range", "bytes " + p.ToString() + "-" + ((long)(dataToRead - 1)).ToString() + "/" + dataToRead.ToString());    }    Response.AddHeader("Content-Length", ((long)(dataToRead - p)).ToString());    Response.ContentType = "application/octet-stream";    Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(filename)));    iStream.Position = p;    dataToRead = dataToRead - p;                  while (dataToRead > 0)    {                          if (Response.IsClientConnected)        {                           length = iStream.Read(buffer, 0, 10240);                                 Response.OutputStream.Write(buffer, 0, length);                                  Response.Flush();            buffer = new Byte[10240];            dataToRead = dataToRead - length;        }        else        {            //如果用户断开连接 防止无限循环
dataToRead = -1;        }    }}catch (Exception ex){                 Response.Write("Error : " + ex.Message);}finally{    if (iStream != null)    {        iStream.Close();    }    Response.End();}}
 
 
,如需转载请自行联系原作者
你可能感兴趣的文章
yum失败
查看>>
eclipse中默认js编辑器非常慢,尤其在拷贝粘贴代码时的解决方法
查看>>
http Post 请求一网络资源返回字符串
查看>>
window策略设置
查看>>
web 开发之js---js 实现地址栏的表单提交加密编码
查看>>
此类目的是防治序列化Json字符串时的循环引用问题-------最好解决方案
查看>>
八门神器怎么使用
查看>>
HealthKit开发教程之HealthKit的主要类型数据
查看>>
ubuntu 系统网络突然"网络已禁用"
查看>>
linux上很方便的上传下载文件工具rz和sz使用介绍
查看>>
forward内部跳转 和redirect重定向跳转的区别
查看>>
Java——新IO 缓冲区与Buffer
查看>>
Redis常用命令入门2:散列类型
查看>>
构建NCBI本地BLAST数据库 (NR NT等) | blastx/diamond使用方法 | blast构建索引 | makeblastdb...
查看>>
深入理解 JavaScript 异步系列(2)—— jquery的解决方案
查看>>
Cisco配置VLAN+DHCP中继代理+NAT转发上网
查看>>
InfluxDB存储引擎Time Structured Merge Tree——本质上和LSM无异,只是结合了列存储压缩,其中引入fb的float压缩,字串字典压缩等...
查看>>
VC++ 监视文件(夹)
查看>>
【转】keyCode对照表及JS监听组合按键
查看>>
php json_decode无法解析特殊问好字符
查看>>