http断点续传与文件下载原理解析
2015-06-16 16:17
423 查看
一、断点续传的原理
其实断点续传的原理很简单,就是在http的请求上和一般的下载有所不同而已。
打个比方,浏览器请求服务器上的一个文时,所发出的请求如下:
假设服务器域名为www.jizhuomi.com/android,文件名为down.zip。
?
服务器收到请求后,按要求寻找请求的文件,提取文件的信息,然后返回给浏览器,返回信息如下:
?
所谓断点续传,也就是要从文件已经下载的地方开始继续下载。所以在客户端浏览器传给web服务器的时候要多加一条信息--从哪里开始。
下面是用自己编的一个“浏览器”来传递请求信息给web服务器,要求从2000070字节开始。
?
仔细看一下就会发现多了一行 range: bytes=2000070-
这一行的意思就是告诉服务器down.zip这个文件从2000070字节开始传,前面的字节不用传了。
服务器收到这个请求以后,返回的信息如下:
?
和前面服务器返回的信息比较一下,就会发现增加了一行:
content-range=bytes 2000070-106786027/106786028
返回的代码也改为206了,而不再是200了。
知道了以上原理,就可以进行断点续传的编程了。
二.文件下载和在浏览器显示
文件下载原理主要控制来自于服务器端响应,浏览器或者httpClient自行读取IO流
?
下面是一个简单的好PHP下载实例
?
三.关于在浏览器中显示文件内容
浏览器默认会显示一些 text/*,image/*,PDF类型的文件,但默认会变成自动下载,这是我们需要修改响应头为
?
其实断点续传的原理很简单,就是在http的请求上和一般的下载有所不同而已。
打个比方,浏览器请求服务器上的一个文时,所发出的请求如下:
假设服务器域名为www.jizhuomi.com/android,文件名为down.zip。
?
?
下面是用自己编的一个“浏览器”来传递请求信息给web服务器,要求从2000070字节开始。
?
这一行的意思就是告诉服务器down.zip这个文件从2000070字节开始传,前面的字节不用传了。
服务器收到这个请求以后,返回的信息如下:
?
content-range=bytes 2000070-106786027/106786028
返回的代码也改为206了,而不再是200了。
知道了以上原理,就可以进行断点续传的编程了。
二.文件下载和在浏览器显示
文件下载原理主要控制来自于服务器端响应,浏览器或者httpClient自行读取IO流
?
?
浏览器默认会显示一些 text/*,image/*,PDF类型的文件,但默认会变成自动下载,这是我们需要修改响应头为
?
相关文章推荐
- 嵌入式操作系统VxWorks中网络协议存储池原理及实现
- 关于计算机网络可靠性优化技术的探析
- Linux网络编程——tcp并发服务器(I/O复用之select)
- Android程序:使用Http的Get方式读取网络数据
- 接口测试-自动化-Java实现-HttpUtil
- 【HTTP】HTTP状态码
- window.onload,<body onload="function()">, document.onreadystatechange, httpRequest.onreadystatechang
- Java实验报告五:Java网络编程及安全
- Android Volley完全解析(二),使用Volley加载网络图片
- Ubuntu系统如何安装双网卡及更改网卡名称(eth0改为eth1)
- 一种无线网络连接不上的解决办法
- HTTP ERROR
- HLS (HTTP Live Streaming)
- ASIHTTPRequest缓存策略download cache
- Delphi-网络编程-UDP聊天程序(转)
- [Erlang]port(gen_tcp)如何并行?
- Http中的Get与Post
- 图解HTTPS协议
- java.lang.NoClassDefFoundError: org/apache/http/impl/client/HttpClients
- Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传