断点设置是什么(在ASP.NET中支持断点续传下载大文件 star163 博客园)
导读:IE的自带下载功能中没有断点续传功能 ...
IE的自带下载功能中没有断点续传功能 ,要实现断点续传功能 ,需要用到HTTP协议中鲜为人知的几个响应头和请求头 。
一. 两个必要响应头Accept-Ranges 、ETag
客户端每次提交下载请求时,服务端都要添加这两个响应头 ,以保证客户端和服务端将此下载识别为可以断点续传的下载:
Accept-Ranges:告知下载客户端这是一个可以恢复续传的下载 ,存放本次下载的开始字节位置 、文件的字节大小;
ETag:保存文件的唯一标识(我在用的文件名+文件最后修改时间 ,以便续传请求时对文件进行验证);
Last-Modified:可选响应头 ,存放服务端文件的最后修改时间 ,用于验证二. 一个重要请求头Range
Range:首次下载时 ,Range头为null ,此时服务端的响应头中必须添加响应头Accept-Ranges 、ETag;
续传请求时 ,其值表示客户端已经收到的字节数 ,即本次下载的开始字节位置,服务端依据这个 值从相应位置读取数据发送到客户端 。三. 用于验证的请求头If-Range 、
当响应头中包含有Accept-Ranges 、ETag时 ,续传请求时 ,将包含这些请求头:
If-Range:对应响应头ETag的值;
Unless-Modified-Since:对应响应头Last-Modified的值。
续传请求时,为了保证客户端与服务端的文件的一致性和正确性 ,有必要对文件进行验证 ,验证需要自己写验证代码,就根据解析这两个请求头的值 ,将客户端已下载的部分与服务端的文件进行对比 ,如果不吻合 ,则从头开始下载 ,如果吻合 ,则断点续传 。四. 速度限制
程序中加入了速度限制 ,用于对客户端进行权限控制的流量限制 。五. 其它注意事项
如:文件名乱码的问题 、文件名中空格变加号 、强制客户端显示下载对话框等 ,详见源码注释:
声明:本站所有文章 ,如无特殊说明或标注 ,均为本站原创发布 。任何个人或组织,在未征得本站同意时 ,禁止复制 、盗用 、采集、发布本站内容到任何网站 、书籍等各类媒体平台 。如若本站内容侵犯了原著者的合法权益 ,可联系我们进行处理 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!