http断点续传(代码片段)

author author     2022-10-24     123

关键词:

断点续传

从下载断开的位置,继续下载,直到下载完整

四个必须的HTTP头域

  • Range
    用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式:
    Range:(unit=first byte pos)-[last byte pos]
    Range : bytes=50- 从第50个字节开始到最后一个字节
    Range : bytes=-70 最后的70个字节
    Range : bytes=50-100 从第50字节到100字节

  • Content-Range
    用于响应头,指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:
    Content-Range: bytes (unit first byte pos) - [last byte pos]/[entity legth]

  • Accept-Ranges
    Accept-Ranges:bytes // 告诉客户端支持断点传输

  • Content-Length
    内容长度

HTTP返回码

200 OK(一切正常)
206 Partial Content(服务器已经成功处理了部分内容)
416  Requested Range Not Satisfiable 对方(客户端)发来的Range 请求头不合理

实例1

请求:

GET /123.zip HTTP/1.1   

响应:

HTTP/1.1 200 OK 
Accept-Ranges : bytes   //告诉客户端支持断点传输
Content-Length : 1900 //文件总大小 
Content-Type : image/jpeg //文件类型

中间停止下载,重新发起请求
请求:

    GET /123.zip HTTP/1.1 
    Range:bytes=580-

响应:

HTTP/1.1 206 Partial Content
Accept-Ranges : bytes
Content-Type : image/jpeg //文件类型
Content-Length : (1900 - 580) //长度则不是总长度了,而580到1900共有多少字节。
Content-Range :bytes 580-(1900-1 ) / 1900   //因为到了文件总大小了,所以指定范围永远不能超过等于总大小;但是到了最后一个字节必须输出出去,完全是写法问题。

实例2

请求:

GET /test.rar HTTP/1.1 
Connection: close 
Host: 116.1.219.219 
Range: bytes=0-801 //一般请求下载整个文件是bytes=0- 或不用这个头

一般正常回应

HTTP/1.1 200 OK 
Content-Length: 801      
Content-Type: application/octet-stream 
Content-Range: bytes 0-800/801 //801:文件总大小

基于http的文件断点续传实现(代码片段)

基于Http的文件断点续传实现1:断点续传的介绍客户端软件断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如... 查看详情

4gb以上,超大文件上传,http断点续传,如何实现?(代码片段)

...08;大都数是4GB以上)的http上传,并且要求支持http断点续传。笔者在以前介绍了实现大文件上传的一些基本概念,其实非常简单,这里在简要归纳一下,方便记忆!服务器端由C语言实现,而不是用java、... 查看详情

大文件上传服务器支持超大文件http断点续传实践总结(代码片段)

...c;需要支持高性能的大文件http上传,并且要求支持http断点续传。这里在简要归纳一下,方便记忆:服务器端由C语言实现,而不是用java、PHP这种解释型语言来实现 查看详情

图解:http范围请求,助力断点续传多线程下载的核心原理(代码片段)

题图:byCharlesLoyer一、序Hi,大家好,我是承香墨影!HTTP协议在网络知识中占据了重要的地位,HTTP协议最基础的就是请求和响应的报文,而报文又是由报文头(Header)和实体组成。大多数HTTP协议的使用方式,都是依赖设置不同... 查看详情

大文件上传服务器支持超大文件http断点续传实践总结(代码片段)

...c;需要支持高性能的大文件http上传,并且要求支持http断点续传。这里在简要归纳一下,方便记忆:服务器端由C语言实现,而不是 查看详情

csharphttp断点续传功能测试(代码片段)

查看详情

断点续传的实现(代码片段)

...响应图解:获取文件ETag的函数:下载文件(断点续传)的函数:从上次断开位置继续下载HTTP断点续传:实现原理(客户端):1.客户端保存当前已下载文件的位置或大小。2.在下次请求时告诉服... 查看详情

ceph储存的s3接口实现(支持断点续传)(代码片段)

最近公司准备接ceph储存,研究了一番,准备用亚马逊的s3接口实现,实现类如下:/***Title:S3Manager*Description:Ceph储存的s3接口实现,参考文档:*https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/dev/RetrievingObjectUsingJava.html*http://docs.ceph.org.cn 查看详情

flume高可用+断点续传(代码片段)

Flume高可用集群工欲善其事,必先利其器。感谢以下博主:https://www.cnblogs.com/qingyunzong/p/8994494.htmlhttps://blog.csdn.net/peng_0129/article/details/80793440https://blog.csdn.net/suojie123/article/details/86577935https://blog.csdn.net/kelong_xhu/article/details/42677045http... 查看详情

curl命令(代码片段)

...P上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上载文件断点续传,http代理服务器管道(pro 查看详情

rsync实现断点续传(代码片段)

...比较悲剧了。这时候可以考虑使用rsync命令替代scp,实现断点续传文件。试验:rsync使用环境:2台RHEL5.7需求:主机A传送文件夹TestDB到主机Brsync-rP--rsh=ssh/home/oracle/TestDB/[email protected]192.168.1.1 查看详情

phpphp在操作断点续传时文件如何分割合并(代码片段)

查看详情

php断点续传之文件上传与文件下载(代码片段)

下载:<?php/**php下载类,支持断点续传*Date:2013-06-30*Author:fdipzone*Ver:1.0**Func:*publicdownload:下载文件*publicsetSpeed:设置下载速度*privategetRange:获取header中Range*/classFileDownload//classstartprivate$_speed=512;// 查看详情

afnetworking实现程序重新启动时的断点续传(代码片段)

今天需要用AFNetworking实现断点续传的功能,但是在进行了一番研究之后,发现AFNetworking虽然支持下载文件的暂停和继续,但是程序重新启动后再次下载无法进行续传。网上有说可以通过AFDownloadRequestOperation这个AFNetworki... 查看详情

讲讲断点续传那点儿事(代码片段)

这次想来讲讲断点续传,以前没相关需求,所以一直没去接触,近阶段了解了之后,其实并不复杂,那么也便来写一篇记录一下,分享给大伙,也方便自己后续查阅。提问Q1:如果你的app需要下载大文件,那么是否有方法可以缩... 查看详情

断点续传(代码片段)

  有时候我们爬取数据跑了半天,突然报错了,例如网络中断,我们想继续爬取,不需程序从头开始爬取,可以采取下面的方案要想程序继续从断开的位置爬取,最好的方案就是将每次爬取的url存储到数据库中,程序每爬取一... 查看详情

webuploader与django进行断点续传,大文件上传(代码片段)

需要实现的效果如下需要使用的 jsjquery.jswebuploader.hshashmap.js路由fromdjango.urlsimportpathfrom.importviewsurlpatterns=[path('index/',views.index),path('checkChunk/',views.checkChunk,name=&# 查看详情

no.4文件断点续传(server)(代码片段)

importsocketserver,os,json,struct,hashlibcodes="文件已存在":1001,"文件不存在":1002File_Path=r‘C:\Users\17303\Desktop\电脑的组成.avi‘#需要传的文件路径File_Size=os.path.getsize(File_Path)f=open(File_Path,"rb")md5=hashlib.md 查看详情