断点续传

ASIHTTPRequest 断点续传

风流意气都作罢 提交于 2020-03-11 09:01:08
最近学习ASIHTTPRequest如何使用,所以利用ASIHTTPRequest自身的功能,写了个可断点下载的小demo 我利用tableview作为下载列表,所有自己custom了一个cell,用来控制下载 enum DownloadStatus { DownloadNotStart = 0, Downloading, DownloadPause, DownloadFinish};@interface DownloadFileListTableViewCell : UITableViewCell <ASIHTTPRequestDelegate, ASIProgressDelegate>{ UIProgressView *_progressView; UIButton *_controlButton; UILabel *_sizeTip; ASIHTTPRequest *_asiRequest; NSURL *_oriURL; enum DownloadStatus _downloadStatus; NSString *_saveFilePath; NSString *_tmpFilePath; long long _curSize; long long _totalSize;} 最新的 ASIHTTPRequest 自己有一个支持断点下载的方法, [_asiRequest

Java实现的断点续传功能

試著忘記壹切 提交于 2020-03-11 09:00:47
代码中已经加入了注释,需要的朋友可以直接参考代码中的注释。下面直接上功能实现的主要代码: import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /* * Encode:UTF-8 * * Author:zhiming.xu * * 多线程的断点下载程序,根据输入的url和指定线程数,来完成断点续传功能。 * * 每个线程支负责某一小段的数据下载;再通过RandomAccessFile完成数据的整合。 */ public class MultiTheradDownLoad { private String

webuploader与django进行断点续传

若如初见. 提交于 2020-03-05 22:45:38
webuploader与django进行断点续传 需要实现的效果如下 需要使用的 js jquery.js webuploader.hs hashmap.js 路由 from django.urls import path from . import views urlpatterns = [ path('index/',views.index), path('checkChunk/',views.checkChunk,name='checkChunk'), path('mergeChunks/',views.mergeChunks,name='mergeChunks'), path('upload/',views.upload,name='upload'), ] 视图 from django.shortcuts import render from django.http import JsonResponse import os def index(request): return render(request,'upload.html') # 检查上传分片是否重复,如果重复则不提交,否则提交 def checkChunk(request): # post请求 if request.method == 'POST': # 获得上传文件块的大小,如果为0,就告诉他不要上传了

记录历程第一篇!ios断点续传

五迷三道 提交于 2020-03-02 18:46:16
// #import "ViewController.h" #define QQURL @"http://211.162.77.51/data2/dmg/aabb46ab7cbb26fbad6f16cb1c7f5a58/QQ_V3.0.2.dmg" @interface ViewController () { NSURLConnection * _connection; NSString * _fileName; unsigned long long _totalSize; unsigned long long _downLoadSize; UIProgressView * _proView; NSFileHandle * _fileHandle; } @end @implementation ViewController - (void)dealloc { [_proView release]; [_connection release]; [_fileHandle closeFile]; [_fileHandle release]; [super dealloc]; } - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super

java大文件分块上传断点续传demo

房东的猫 提交于 2020-03-01 20:52:25
第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null ; String newpathname = null ; String fileAddre = "/numUp" ; try { InputStream stream = file.getInputStream(); // 把文件读入 String filePath = request.getRealPath(fileAddre); // 取系统当前路径 File file1 = new File(filePath); // 添加了自动创建目录的功能 ((File)file1).mkdir(); newfileName = System.currentTimeMillis() + file.getFileName().substring( file.getFileName().lastIndexOf( '.' )); ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStream bos = new FileOutputStream(filePath + "/" + newfileName); newpathname = filePath + "/"

外网大文件传输断点续传源码

为君一笑 提交于 2020-03-01 14:53:59
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQuery Uploadify的部分,这部分代码封装在bjui-all.js文件中, 在bjui-all.js文件中的全局变量定义中有以下部分代码,这就是定义的有关于上传的Uploadify控件的重要变量: upload:{uploadLimit:5,fileSizeLimit:31744,removeTimeout:0.8} 以上三个变量代表的含义是: uploadLimit :表示上传文件个数的限制,5表示文件上传个数限制是5个 fileSizeLimit :表示上传文件大小的限制,31744单位是KB,也就是表示31M removeTimeout :表示移除文件的时间限制 继续查找使用到这些变量的地方,看到了文件大小超出限制等 了解了BJUI前端框架对于上传大文件的限制,可以这样使用,增大文件上传大小和数量,可以按照如下进行修改,我们在bjui-all

前端大文件传输断点续传源码

て烟熏妆下的殇ゞ 提交于 2020-03-01 12:27:22
核心原理: 该项目核心就是文件分块上传。前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题。 * 如何分片; * 如何合成一个文件; * 中断了从哪个分片开始。 如何分,利用强大的js库,来减轻我们的工作,市场上已经能有关于大文件分块的轮子,虽然程序员的天性曾迫使我重新造轮子。但是因为时间的关系还有工作的关系,我只能罢休了。最后我选择了百度的WebUploader来实现前端所需。 如何合,在合之前,我们还得先解决一个问题,我们如何区分分块所属那个文件的。刚开始的时候,我是采用了前端生成了唯一uuid来做文件的标志,在每个分片请求上带上。不过后来在做秒传的时候我放弃了,采用了Md5来维护分块和文件关系。 在服务端合并文件,和记录分块的问题,在这方面其实行业已经给了很好的解决方案了。参考迅雷,你会发现,每次下载中的时候,都会有两个文件,一个文件主体,另外一个就是文件临时文件,临时文件存储着每个分块对应字节位的状态。 这些都是需要前后端密切联系才能做好,前端需要根据固定大小对文件进行分片,并且请求中要带上分片序号和大小。前端发送请求顺利到达后台后,服务器只需要按照请求数据中给的分片序号和每片分块大小(分片大小是固定且一样的)算出开始位置,与读取到的文件片段数据,写入文件即可。 为了便于开发,我 将服务端的业务逻辑进行了如下划分,分成初始化

jsp大文件传输断点续传源码

为君一笑 提交于 2020-03-01 04:42:34
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如MD5秒传的信息。 public class FileInf { public FileInf(){} public String id = "" ; public String pid = "" ; public String pidRoot = "" ; /** * 表示当前项是否是一个文件夹项。 */ public boolean fdTask = false ; // /// 是否是文件夹中的子文件 /// </summary> public boolean fdChild = false ; /** * 用户ID。与第三方系统整合使用。 */ public int uid =0; /** * 文件在本地电脑中的名称 */ public String nameLoc = "" ; /** * 文件在服务器中的名称。 */ public String nameSvr = "" ; /** * 文件在本地电脑中的完整路径。示例:D:\Soft\QQ2012.exe */ public String pathLoc = ""

silverlight多文件断点续传

梦想与她 提交于 2020-03-01 04:37:20
最近在做silverlight项目的时候经常性会遇到文件上传,看到163邮箱的断点续传,感觉用户体验真的很好,所有花了点时间研究了一下silverlight的断点续传功能。 在博客园中找了一下没有这样的功能,后来看到 代震军BLOG 的博客中有一篇 DiscuzNT使用Silverlight进行多文件上传 ,能上传多文件,可是没有实现断点续传,就自己动手修改了一下代码,实现简单的暂停后在续传功能,如果想做成如163邮箱那样的下次登录后还能在续传,就需要保存当时暂停的状态。首先感谢这些大牛们的技术支持和无私的代码奉献,好了,下面谈谈对代码的理解和更改。 在里面利用的是依赖属性的状态改变来时时更新一些数据,如已上传的文件大小,以及文件上传的状态等,由于代码很多,挑选部分类似的代码如下,后面将源代码公布。 /// <summary> /// 当前已上传的字节数(这里与FileCollection中的同名属性意义不同,FileCollection中的是已上传的所有文件的字节总数) /// </summary> public double BytesUploaded { get { return _bytesUploaded; } set { _bytesUploaded = value; NotifyPropertyChanged("BytesUploaded"); Percentage

ie文件断点续传

房东的猫 提交于 2020-03-01 04:35:01
一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的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