断点续传

.net之大文件断点续传

浪子不回头ぞ 提交于 2019-12-10 15:47:09
HTML 部分 <% @ Page Language ="C#" AutoEventWireup ="true" CodeBehind ="index.aspx.cs" Inherits ="up6.index" %> <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> < html xmlns ="http://www.w3.org/1999/xhtml" > < head > < meta http-equiv ="Content-Type" content ="text/html; charset=gb2312" /> < title > up6- 多标签演示页面 </ title > < link href ="js/up6.css" type ="text/css" rel ="Stylesheet" charset ="gb2312"/> < script type ="text/javascript" src ="js/jquery-1.4.min.js"></ script > < script type ="text/javascript" src ="js/json2

scp断点续传

ε祈祈猫儿з 提交于 2019-12-10 05:19:38
scp 是通过ssh协议传输数据,如果是想传输一个很大的数据,这几天我就遇到过,一个tar包,400G左右,通过scp拷贝时,有可能遇到服务器断电什么的悲剧问题,那么类似scp拷贝的另一个命令 rsync就可以实现意外中断后,下次继续传,命令如下: rsync - P - - rsh = ssh home . tar 192.168 .205 .34 : / home / home . tar ## -P: 是包含了 “–partial –progress”, 部分传送和显示进度 ## -rsh=ssh 表示使用ssh协议传送数据 如果不想每次都使用 rsync -P rsh=ssh 之类的,可以写成alias scpr=“rsync -P --rsh=ssh” 那么下次就可以直接使用 scpr home.tar 192.168.205.34:/home/home.tar 来拷贝数据了。 在传输过程中,目标文件会以.home.tar.xxxx文件也隐藏,可以用la -a来显示出来。如果scpr中断了,那么该文件会变成用户指定的目标文件"home.tar",下次传的时候又会改成.home.tar.xxxx文件。 执行rsync过程中,我们肯定希望把这个job放入后台执行,而不因为secureCRT类似的窗口中断受影响,那么在执行了 rsync -P --rsh=ssh home

ios开发---ASIHTTPRequest下载(支持断点续传)

依然范特西╮ 提交于 2019-12-09 23:07:36
在工程中,我们会常常遇到需要下载的程序,比如下载在线音乐、下载图片等等,今天我将介绍一下利用ASIHTTPRequest的下载示例,支持断点续传,利用ASIHTTPRequest下载以及断点续传的原理,今天重点介绍如何实现,废话少说,开始正文:   一、创建网络请求队列   首先,创建网络请求队列,如下:    ASINetworkQueue *que = [[ASINetworkQueue alloc] init];   self.netWorkQueue = que;   [que release];   [self.netWorkQueue reset];   [self.netWorkQueue setShowAccurateProgress:YES];   [self.netWorkQueue go]; 复制代码   二、创建存放路径   //初始化Documents路径   NSString *path = [NSHomeDirectory() stringByAppendingPathComponent"Documents"];   //初始化临时文件路径   NSString *folderPath = [path stringByAppendingPathComponent"temp"];   //创建文件管理器   NSFileManager

AFNetWorking 实现文件的下载 断点续传

China☆狼群 提交于 2019-12-07 21:13:53
最近用到了下载,网上也搜寻过下载方面的东西,没有找到太合适的关于AFNetWorking 3.x方面的断点续传的介绍或者demo,于是自己写吧。 AFURLSessionManager这个封装了上传、下载方面的相关内容,仔细阅读不难发现,这个就是对 NSURLSession 、NSURLSessionTask 进行的封装,下载、上传这些操作用到的就是NSURLSessionTask相关子类。 先说说第一种方式,就是最简单的下载,用到的方法显而易见 /** 第一种方式 */ //方法包含了下载所需的 参数 回调 很全面, 这里返回一个NSURLSessionDownloadTask对象,用于调用系统的方法: resume开始、继续下载,suspend暂停下载,cancel取消下载 - (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request progress:(nullable void (^)(NSProgress *downloadProgress))downloadProgressBlock destination:(nullable NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination

android 中断点续传理解

≡放荡痞女 提交于 2019-12-07 21:13:34
断点续传之前我们首先需要了解http协议 断点续传简单的说,就是接着上一次的已经下载好的位置接着下载文件,如何接着以前已经下载的位置接着下载,这是我们要解决的问题. http header详解参考 http://www.cnblogs.com/xyxiong/archive/2011/08/19/2145869.html 。 解释其中几个用到的属性: Range : 用于客户端到服务器端的请求,可通过该字段指定下载文件的某一段大小,及其单位。典型的格式如: Range: bytes=0-499 下载第0-499字节范围的内容 Range: bytes=500-999 下载第500-999字节范围的内容 Range: bytes=-500 下载最后500字节的内容 Range: bytes=500- 下载从第500字节开始到文件结束部分的内容 客户端请求: httpURLConnection.setRequestProperty("Range", "bytes="+12+"-"); 服务器响应: Accept-Ranges : 用于服务器端到客户端的应答,客户端通过该字段可以判断服务器是否支持断点续传 Accept-Ranges: bytes 表示支持以bytes为单位进行传输。 Accept-Ranges: none 表示不支持 Content-Ranges :

HTTP断点续传的基本原理

﹥>﹥吖頭↗ 提交于 2019-12-07 21:13:23
HTTP断点续传的基本原理 断点续传是我们现在经常接触的概念,那么HTTP协议是如何支持断点续传的呢。我们先从一个例子来看看。 下面是一个断点续传的例子:(使用Net Vampire得到) I 01-7-12 19:19:23 ------------------------- Attempt 1 ------------------------- P 01-7-12 19:19:24 Connecting to 127.0.0.3 ... P 01-7-12 19:19:24 Connected to 127.0.0.3 [127.0.0.3] S 01-7-12 19:19:24 GET /VS0515AI.EXE HTTP/1.1 S 01-7-12 19:19:24 Connection: close S 01-7-12 19:19:24 Host: 127.0.0.3 S 01-7-12 19:19:24 Accept: */* S 01-7-12 19:19:24 Pragma: no-cache S 01-7-12 19:19:24 Cache-Control: no-cache S 01-7-12 19:19:24 Referer: http://127.0.0.3/ S 01-7-12 19:19:24 User-Agent: Mozilla/4.04 [en]

【最佳实践】OSS开源工具ossutil-大文件断点续传

时间秒杀一切 提交于 2019-12-07 12:07:51
经常碰到内部同学或者外部客户问ossutil关于大文件断点续传的问题。本文简单描述下原理并举例说明。 用户可从这里获取ossutil。 官网: https://help.aliyun.com/document_detail/50452.html 代码: https://github.com/aliyun/ossutil OSS断点续传 应用场景 当调用OSS的PutObject来上传较大的文件时,如果上传过程中出现错误,比如网络错误,那么此次上传失败。重试时必须从文件起始位置上传。 针对这种情况,OSS提供了分片上传(Multipart Upload)来达到断点续传的效果。分片上传就是将要上传的文件分成多个数据块(OSS里又称之为Part)来分别上传,上传完成之后再调用OSS的接口将这些Part组合成一个Object。 因此,OSS断点续传适用于以下场合。 恶劣的网络环境:如手机端,当出现上传失败的时候,可以对失败的Part进行独立的重试,而不需要重新上传其他的Part。 断点续传:中途暂停之后,可以从上次上传完成的Part的位置继续上传。 详细信息,请参考 https://help.aliyun.com/document_detail/31850.html 。 实现原理 在分片上传的过程中,已经上传的Part的生命周期是永久的,因此很容易可以实现断点续传的功能。 来源:

NSURLSessionDownloadTask的后台下载与断点续传

跟風遠走 提交于 2019-12-07 12:07:42
对于后台下载与断点续传相信大家肯定不会陌生,那么如果要同时实现这两种需求该怎么办呢? 使用NSURLSessionDataTask可以很轻松实现断点续传,可是有个致命的缺点就是无法进行后台下载,一点应用程序进入了后台,便会停止下载.所以无法满足我们的需求.而NSURLSessionDownloadTask是唯一可以实现后台下载的类,所以我们只能从这个类进行下手了 网上关于NSURLSessionDownloadTask的断点续传资料很多,但是很遗憾的是基本都是一模一样的CV大法.而且只有一个暂停按钮暂停后继续下载,而关于应用程序被关闭后的断点续传只字不提. 那么本篇我们就来谈谈关于应用程序随时可能被杀死的情况下,如何进行断点续传. 关于断点续传原理: 首先,如果想要进行断点续传,那么需要简单了解一下断点续传的工作机制,在HTTP请求头中,有一个Range的关键字,通过这个关键字可以告诉服务器返回哪些数据给我 比如: bytes=500-999 表示第500-第999字节 bytes=500- 表示从第500字节往后的所有字节 然后我们再根据服务器返回的数据,将得到的data数据拼接到文件后面,就可以实现断点续传了. 关于NSURLSessionDownloadTask基础 大家可以参考下这篇文章 http://my.oschina.net/iOSliuhui/blog/469276

解读断点续传的基本原理

雨燕双飞 提交于 2019-12-07 12:07:29
断点续传的理解可以分为两部分:一部分是断点,一部分是续传。断点的由来是在下载过程中,将一个下载文件分成了多个部分,同时进行多个部分一起 的下载,当某个时间点,任务被暂停了,此时下载暂停的位置就是断点了。续传就是当一个未完成的下载任务再次开始时,会从上次的断点继续传送。      使用多线程断点续传下载的时候,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,多个线程并发可以占用服务器端更多资源,从而加快下载速度。   在下载(或上传)过程中,如果网络故障、电量不足等原因导致下载中断,这就需要使用到断点续传功能。下次启动时,可以从记录位置(已经下载的部分)开始,继续下载以后未下载的部分,避免重复部分的下载。断点续传实质就是能记录上一次已下载完成的位置。    断点续传的过程   ①断点续传需要在下载过程中记录每条线程的下载进度;   ②每次下载开始之前先读取数据库,查询是否有未完成的记录,有就继续下载,没有则创建新记录插入数据库;   ③在每次向文件中写入数据之后,在数据库中更新下载进度;   ④下载完成之后删除数据库中下载记录。      断点续传在HTTP请求上和一般的下载有所不同,客户端浏览器传给Web服务器的时候要多加一条信息——从哪里开始(HTTP请求变量)。要实现HTTP断点续传,Web服务器必须支持HTTP/1.1

用Java实现HTTP断点续传(3)

回眸只為那壹抹淺笑 提交于 2019-12-07 08:46:57
(二) Java 实现断点续传的关键几点 (1)用什么方法实现提交RANGE: bytes=2000070-。 当然用最原始的Socket是肯定能完成的,不过那样太费事了,其实Java的net包中提供了这种功能。代码如下: URL url = new URL(" http://www.sjtu.edu.cn/down.zip";;); HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection (); //设置User-Agent httpConnection.setRequestProperty("User-Agent","NetFox"); //设置断点续传的开始位置 httpConnection.setRequestProperty("RANGE","bytes=2000070"); //获得输入流 InputStream input = httpConnection.getInputStream(); 从输入流中取出的字节流就是down.zip文件从2000070开始的字节流。大家看,其实断点续传用Java实现起来还是很简单的吧。接下来要做的事就是怎么保存获得的流到文件中去了。 保存文件采用的方法 我采用的是IO包中的RandAccessFile类。 操作相当简单