分片/断点上传
分片上传功能支持将一个文件切割为一系列特定大小的小数据片,分别将这些小数据片分别上传到服务端,全部上传完后再在服务端将这些小数据片合并成为一个资源。
我们可以把一个文件理解成块(block), 然后一个文件可以分成多个片(chunk).那么一个文件资源则是一个和多个片组成.
块是服务器持久存储数据单位(可以理解一个完整的文件)
片是上传文件临时的存储(可以和服务器约定周期时间未能合并成块的文件进行清除)
基本流程
第一步:调用检测接口,以filename为参数,目的:检测当前文件服务器内是否存在(两种情况1:文件上传完成2:文件上传部分(多少片), 根据上传情况后台会给你响应:上传完成返回1,其他情况会返回上传的片)
第二步:将准备上传的文件进行分片,例如:我们将一个12.5m的大小的的文件分若干片(一片5m)不足5m的也是一片,
带文件上传完成后服务器将上传的片进行合并成完整文件
上传的核心代码(基于okhttp上传)
@Override
public void run() {
try {
int blockLength = 1024 * 1024;
file = new File(fileName);
long tsize = file.length();
int wTime = (int)(tsize/1000/1000)*150+5000;
try{
Thread.sleep(wTime);
}catch(Exception e){
}
String debugstr = "";
if (tsize!=file.length()){
debugstr = "文件上传时发现文件大小的变动,从"+tsize+