HTTP断点续传下载的原理
2023-09-14 09:02:23 时间
要实现断点续传下载文件,首先要了解断点续传的原理。断点续传其实就是在上一次下载断开的位置开始继续下载,HTTP协议中,可以在请求报文头中加入Range段,来表示客户机希望从何处继续下载。
这是一个普通的下载请求:
GET /test.txt HTTP/1.1 Accept:*/* Referer:http://192.168.1.96 Accept-Language:zh-cn Accept-Encoding:gzip,deflate User-Agent:Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.2;.NET CLR 2.0.50727) Host:192.168.1.96 Connection:Keep-Alive
这表示从1024字节开始断点续传(加入了Range:bytes=1024-):
GET /test.txt HTTP/1.1 Accept:*/* Referer:http://192.168.1.96 Accept-Language:zh-cn Accept-Encoding:gzip,deflate User-Agent:Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.2;.NET CLR 2.0.50727) Host:192.168.1.96 Range:bytes=1024- Connection:Keep-Alive
C#主要代码:
#region 以断点续传方式下载文件 /// <summary> /// 以断点续传方式下载文件 /// </summary> /// <param name="strFileName">下载文件的保存路径</param> /// <param name="strUrl">文件下载地址</param> public void DownloadFile(string strFileName, string strUrl) { //打开上次下载的文件或新建文件 long SPosition = 0; FileStream FStream; if (File.Exists(strFileName)) { FStream = File.OpenWrite(strFileName); SPosition = FStream.Length; FStream.Seek(SPosition, SeekOrigin.Current);//移动文件流中的当前指针 } else { FStream = new FileStream(strFileName, FileMode.Create); SPosition = 0; } try { HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(strUrl); if (SPosition > 0) myRequest.AddRange((int)SPosition);//设置Range值 //向服务器请求,获得服务器的回应数据流 Stream myStream = myRequest.GetResponse().GetResponseStream(); byte[] btContent = new byte[512]; int intSize = 0; intSize = myStream.Read(btContent, 0, 512); while (intSize > 0) { FStream.Write(btContent, 0, intSize); intSize = myStream.Read(btContent, 0, 512); } FStream.Close(); myStream.Close(); //文件下载完成 } catch { FStream.Close(); } } #endregion
相关文章
- 国内外最值得关注的AIGC机构 丨量子位智库报告(附下载)
- Qt Creator的下载和安装
- java-jdk8下载及安装
- Go HTTP 编程 | 01 - 使用 http 包创建 Web 服务器
- HTTP默认端口_http协议使用的端口号
- linux做代理服务器_linux搭建http下载服务器
- PDF阅读器 PDF Acrobat Reader DC 2020中文版软件安装包免费下载以及安装教程
- 思维导图设计 XMind 软件安装包下载,XMind软件下载安装激活
- 教你如何使用wget下载整个网站(子目录)或特定目录
- 教你使用Apache搭建Http下载服务器
- 服务Linux快速启动HTTP服务实现网络分享(linux启动http)
- 服务器一步步教你搭建Linux HTTP服务器(linux搭建http)
- 服务 Linux下检测HTTP服务的方法(linux测试http)
- 请求使用Linux发送HTTP请求的方法(linux发送http)
- 极速搭建Linux下HTTP代理服务器(linux搭建http代理)
- Linux下载之路:HTTP下载(linuxhttp下载)
- Linux下抓取HTTP包的技术实现(linux抓http包)
- 新一代Oracle 11g——开创数据库新纪元(下载oracle11g)
- HTTP请求在Linux下的实现(http请求linux)
- Linux下使用cURL进行文件下载(curllinux下载)
- 深入浅出Mongodb Http: 开箱即用的可扩展性数据库(mongodb http)
- 安装ADB工具Linux下快速安装ADB工具:快进快出(adb linux 下载)
- Linux下快速访问HTTP(linux 访问http)
- Linux拦截HTTP的安全防护(Linux拦截http)
- Oracle免注册免费下载,极速拥有(oracle 免注册下载)
- Mos下载Oracle轻松完成挑战(mos下载oracle)
- 免费下载MySQL 2005,轻松上手数据库操作(mysql下载2005)