JavaScript File分段上传
前端之家收集整理的这篇文章主要介绍了
JavaScript File分段上传,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
js方法
size){
i=-1;
end=size;
}else{
i+=1;
end=end;
}
//按大小切割
文件段
var blob = file.slice(start,end);
xmlhttp.setRequestHeader('charset','utf-8');
xmlhttp.setRequestHeader("fileMD5",fileMD5);
xmlhttp.setRequestHeader("start",start);
xmlhttp.setRequestHeader("end",end);
xmlhttp.send(blob);
if(xmlhttp.status==200){
if(end==size){
var backtext=xmlhttp.responseText;
alert(backtext);
}else{
alert("
上传完成第"+i+"段")
start=end;
chunk_upload(button);
}
}else{
alert("
上传错误");
chunk_upload(button);
}
}
主要思想:
注意设置切割的起始位置和切割大小,通过XMLHttpRequest的发送请求(http协议要知道)。
如果一些标记数据可以添加协议头:xmlhttp.setRequestHeader("end",end);
发送协议体xmlhttp.send(data);
监听返回码来判断是否传递成功,在进行下一步操作。
重新设置切割位置,然后递归调用自身start=end;chunk_upload(button);
注意:
切割的start与end和filesize的关系
纯js异步上传文件,并返回上传进度
纯js实现异步上传文件,异步返回文件上传进度,0.05到0.1秒回调一次上传进度,其它详细见代码片段下用法注释
上传情况
xhr.upload.onprogress = function(evt) {
loaded = evt.loaded;
tot = evt.total;
per = Math.floor(100 * loaded / tot); //已经
上传的百分比
if(uploading instanceof Function){
uploading(per);
}
};
xhr.open("post",uploadUrl);
xhr.send(fd);
}
};
window.myUpload = myUpload;
})(window,document);
//
用法
//触发
文件上传事件
myUpload({
//
上传文件接收地址
uploadUrl: "/async/myUpload.
PHP",//选择
文件后,发送
文件前
自定义事件
//file为
上传的
文件信息,可在此处做
文件检测、初始化进度条等动作
beforeSend: function(file) {
},//
文件上传完成后回调
函数
//res为
文件上传信息
callback: function(res) {
},//返回
上传过程中
包括上传进度的相关信息
//详细请看res,可在此加入进度条相关
代码
uploading: function(res) {
}
});