断点续传

java文件断点续传的简单实现

这一生的挚爱 提交于 2019-12-03 13:40:45
一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。 HTTP协议本身不支持断点上传,需要自己实现。 二、Range 用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式: Range:用于客户端到服务端的请求,可以通过改字段指定下载文件的某一段大小及其单位,字节偏移从0开始。典型格式: Ranges: (unit=first byte pos)-[last byte pos] Ranges: bytes=4000- 下载从第4000字节开始到文件结束部分 Ranges: bytes=0~N 下载第0-N字节范围的内容 Ranges: bytes=M-N 下载第M-N字节范围的内容 Ranges: bytes=-N 下载最后N字节内容 1.以下几点需要注意: (1)这个数据区间是个闭合区间,起始值是0,所以“Range: bytes=0-1”这样一个请求实际上是在请求开头的2个字节。 (2)“Range: bytes=-200”,它不是表示请求文件开始位置的201个字节,而是表示要请求文件结尾处的200个字节。 (3)如果last byte pos小于first byte pos

java实现文件的断点续传

耗尽温柔 提交于 2019-12-03 13:40:21
java 两台服务器之间,大文件上传(续传),采用了 Socket 通信机制以及 JavaIO 流两个技术点,具体思路如下: 实现思路: 1 、服:利用 ServerSocket 搭建服务器,开启相应端口,进行长连接操作 2 、服:使用 ServerSocket.accept() 方法进行阻塞,接收客户端请求 3 、服:每接收到一个 Socket 就建立一个新的线程来处理它 4 、客:利用 Socket 进行远程连接,询问已上传进度 5 、客:使用 FileInputStream.skip(long length) 从指定位置读取文件,向服务器发送文件流 6 、服:接收客户端输入流,使用 RandomAccessFile.seek(long length) 随机读取,将游标移动到指定位置进行读写 7 、客 / 服:一个循环输出,一个循环读取写入 8 、示例:以下是具体代码,仅供参考 文件介绍: FileUpLoadServer.java (服务器接收文件类) FileUpLoadClient.java (客户端发送文件类) FinalVariables.java (自定义参数类) SocketServerListener.java ( JavaWeb 启动 Socket 操作类) web.xml (配置文件,跟随项目启动) 断点上传(服务端) package com . cn .

大文件的分片传,断点续传,md5校验

社会主义新天地 提交于 2019-12-03 02:10:59
一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。 HTTP协议本身不支持断点上传,需要自己实现。 二、Range 用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式: Range:用于客户端到服务端的请求,可以通过改字段指定下载文件的某一段大小及其单位,字节偏移从0开始。典型格式: Ranges: (unit=first byte pos)-[last byte pos] Ranges: bytes=4000- 下载从第4000字节开始到文件结束部分 Ranges: bytes=0~N 下载第0-N字节范围的内容 Ranges: bytes=M-N 下载第M-N字节范围的内容 Ranges: bytes=-N 下载最后N字节内容 1.以下几点需要注意: (1)这个数据区间是个闭合区间,起始值是0,所以“Range: bytes=0-1”这样一个请求实际上是在请求开头的2个字节。 (2)“Range: bytes=-200”,它不是表示请求文件开始位置的201个字节,而是表示要请求文件结尾处的200个字节。 (3)如果last byte pos小于first byte pos

断点续传

匿名 (未验证) 提交于 2019-12-03 00:32:02
通常Web服务器(如Apache)默启断点续传。故直通Web服务器提供文件下载,不必特配即可享断点续传。断点续传是发起HTTP请求时加RANGE头告知服务器客户端已下多少字节。待所有请求返后把所得内容一块块拼接起来即完整资源。 Linux测服务器支持断点续传否 localhost [~] # wget - S http : //httpd.apache.org/images/httpd_logo_wide_new.png 2>&1 | grep ‘Accept-Ranges’ Accept - Ranges : bytes 输出结果Accept-Ranges: bytes表服务器支持按字节下载。 转载请标明出处: 断点续传 文章来源: 断点续传

http断点续传

匿名 (未验证) 提交于 2019-12-03 00:30:01
来源: https://blog.csdn.net/liang19890820/article/details/53215087 简述 断点续传:指的是在上传/下载时,将任务(一个文件或压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传/下载,如果碰到网络故障,可以从已经上传/下载的部分开始继续上传/下载未完成的部分,而没有必要从头开始上传/下载。可以节省时间,提高速度。 断点续传的用途 有时用户上传/下载文件需要历时数小时,万一线路中断,不具备断点续传的 HTTP/FTP 服务器或下载软件就只能从头重传,比较好的 HTTP/FTP 服务器或下载软件具有断点续传能力,允许用户从上传/下载断线的地方继续传送,这样大大减少了用户的烦恼。 常见的支持断点续传的上传/下载软件:QQ 旋风、迅雷、快车、电驴、酷6、土豆、优酷、百度视频、新浪视频、腾讯视频、百度云等。 在 Linux/Unix 系统下,常用支持断点续传的 FTP 客户端软件是 lftp。 Range & Content-Range HTTP1.1 协议(RFC2616)开始支持获取文件的部分内容,这为并行下载以及断点续传提供了技术支持。它通过在 Header 里两个参数实现的,客户端发请求时对应的是 Range ,服务器端响应时对应的是 Content-Range。 Range 用于请求头中

java文件操作断点续传

匿名 (未验证) 提交于 2019-12-02 21:52:03
前言: 今天了解了一下断点续传,先记录一下,可能了解的不是特别全面,主要是看网上的实现。 正文: 根据了解其主要实现是两种吧,一种是 断点续传可以通过使用RandomAccessFile(随机访问文件)专门处理文件的类,里面有seek方法和skipBytes()方法可以移动文件指针具体,可以自行了解,另外也可以使用InputStream,里面有一个skip方法可以移动文件指针。实现思路就是每次传输时用缓冲区,每次写入记录当前已经传输的大小,然后保存,暂停时将记录和对应文件永久保存(数据库,文件等)。下次传输时用seek或者skip函数移动指针再读取传输。 关于RandomAccessFile “r”:以只读的方式打开,调用该对象的任何write(写)方法都会导致IOException异常 “rw”:以读、写方式打开,支持文件的读取或写入。若文件不存在,则创建之。 “rws”:以读、写方式打开,与“rw”不同的是,还要对文件内容的每次更新都同步更新到潜在的存储设备中去。这里的“s”表示synchronous(同步)的意思 “rwd”:以读、写方式打开,与“rw”不同的是,还要对文件内容的每次更新都同步更新到潜在的存储设备中去。使用“rwd”模式仅要求将文件的内容更新到存储设备中,而使用“rws”模式除了更新文件的内容,还要更新文件的元数据(metadata)

php如何实现大文件断点续传-php文件

ⅰ亾dé卋堺 提交于 2019-12-02 21:50:00
总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件已上传的那部分在下次网络连接时不必再重传。所以我们本地在上传的时候,要将大文件进行分片,比如分成1024*1024B,即将大文件分成1M的片进行上传,服务器在接收后,再将这些片合并成原始文件,这就是分片的基本原理。断点续传要求本地要记录每一片的上传的状态,我通过三个状态进行了标记(wait loading finish),当网络中断,再次连接后,从断点处进行上传。服务器通过文件名、总片数判断该文件是否已全部上传完成。 下面来说细节: 1、首先获取文件(音视频、图片) 分两种情况,一种是在相册库里直接获取,一种是调用相机。如果是通过UIImagePickerView来获取(细节不详述,网上一大堆),我们会发现当你选定一个视频的时候,会出现图1的压缩页面,最后我们的app获取的视频就是这个经过压缩后的视频(不是视频库里的原始视频,这里有个注意点,操作完该压缩视频后记得释放,系统不会帮你释放的,需要你手动来操作,下面会说到),然后通过UIImagePickerView的协议方法中的- ( void

PHP+FLASH大文件断点续传功能分享

心不动则不痛 提交于 2019-12-02 21:30:50
1. 使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现 ( http://pecl.php.net/package/apc ) APC 实现方法: 安装APC,参照官方文档安装,可以使用PECL模块安装方法快速简捷,这里不说明 配置php.ini,设置参数 apc.rfc1867=1 ,使APC支持上传进度条功能,在APC源码说明文档里面有说明 代码范例: 大文件(50G)上传的实现细节: 服务端接收文件数据的处理逻辑代码: 2. 使用PECL扩展模块uploadprogress实现 ( http://pecl.php.net/package/uploadprogress ) uploadprogress 模块实现方法: 使用PECL模块安装方法安装该模块 php.ini 里面设置 uploadprogress.file.filename_template = “/tmp/upd_%s.txt” 代码范例: 进度的处理逻辑比较简单,只是更新数据库中的数据就行了。不需要做其它的处理。 客户端代码如下: 服务端代码如下: 实现后的效果: 强大的文件夹上传,能够轻松支持10W级别的文件夹上传。 速度还不错 文件支持续传,支持刷新浏览器,关闭浏览器,重启电脑之后仍然能够续传。 可以参考这篇文章: http://blog.ncmem.com/wordpress

PHP大文件分片上传断点续传实例源码

自古美人都是妖i 提交于 2019-12-02 19:25:45
1. 使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现 ( http://pecl.php.net/package/apc ) APC 实现方法: 安装APC,参照官方文档安装,可以使用PECL模块安装方法快速简捷,这里不说明 配置php.ini,设置参数 apc.rfc1867=1 ,使APC支持上传进度条功能,在APC源码说明文档里面有说明 代码范例: 大文件(50G)上传的实现细节: 服务端接收文件数据的处理逻辑代码: 2. 使用PECL扩展模块uploadprogress实现 ( http://pecl.php.net/package/uploadprogress ) uploadprogress 模块实现方法: 使用PECL模块安装方法安装该模块 php.ini 里面设置 uploadprogress.file.filename_template = “/tmp/upd_%s.txt” 代码范例: 进度的处理逻辑比较简单,只是更新数据库中的数据就行了。不需要做其它的处理。 客户端代码如下: 服务端代码如下: 实现后的效果: 强大的文件夹上传,能够轻松支持10W级别的文件夹上传。 速度还不错 文件支持续传,支持刷新浏览器,关闭浏览器,重启电脑之后仍然能够续传。 可以参考这篇文章: http://blog.ncmem.com/wordpress

前端实现文件的断点续传

馋奶兔 提交于 2019-12-02 18:51:13
一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。 HTTP协议本身不支持断点上传,需要自己实现。 二、Range 用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式: Range:用于客户端到服务端的请求,可以通过改字段指定下载文件的某一段大小及其单位,字节偏移从0开始。典型格式: Ranges: (unit=first byte pos)-[last byte pos] Ranges: bytes=4000- 下载从第4000字节开始到文件结束部分 Ranges: bytes=0~N 下载第0-N字节范围的内容 Ranges: bytes=M-N 下载第M-N字节范围的内容 Ranges: bytes=-N 下载最后N字节内容 1.以下几点需要注意: (1)这个数据区间是个闭合区间,起始值是0,所以“Range: bytes=0-1”这样一个请求实际上是在请求开头的2个字节。 (2)“Range: bytes=-200”,它不是表示请求文件开始位置的201个字节,而是表示要请求文件结尾处的200个字节。 (3)如果last byte pos小于first byte pos