首页 >

JavaScript File分段上传【javascript】

web前端|js教程JavaScript File分段上传【javascript】
js_file,js_file分段上传
web前端-js教程
HTML
闲来长沙麻将源码,ubuntu安装ftl,远程tomcat启不动咋办,爬虫远程接单,php 复选,智能软文对seo有什么用lzw
 
js方法
虚拟币众筹源码,安装多个vscode,ubuntu退出所有程序,tomcat安全测试,iOS sqlite死锁,wordpress 菜单 插件,学前端开发框架费用,影刀爬虫,邮箱 php,seo艺术 pdf,全套网站模板,电子商务网页设计模板,深蓝后台登录模板,如何用微擎创建微页面,美萍商业进销存管理系统2014完美破解版,微信小程序 天上人间lzw
var fileSplitSize = 1024 * 1024;var start=0,end=0;var i=0;// 文件段上传function chunk_upload(button){var xmlhttp = new XMLHttpRequest();xmlhttp.open("POST", "/chunk_upload/upload/", false);xmlhttp.setRequestHeader("X-CSRFToken", button.form['csrfmiddlewaretoken'].value);var f = button.form;var file = f['file']['files'][0];var size=file.size;end=start+fileSplitSize;if(end>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);
}}
主要思想:
哪里有算命源码,vscode鼠标箭头颜色,ubuntu目录切换,tomcat安装卡住了,sqlite数据库的命令行,爬虫泡酒,php判断图片大小,英文seo如何做,开源 微信网站,dz模板引擎lzw
  注意设置切割的起始位置和切割大小,通过XMLHttpRequest的发送请求(http协议要知道)。

如果一些标记数据可以添加协议头:xmlhttp.setRequestHeader(“end”, end);

发送协议体xmlhttp.send(data);

监听返回码来判断是否传递成功,在进行下一步操作。

重新设置切割位置,然后递归调用自身start=end;chunk_upload(button);

注意:

切割的start与end和filesize的关系

纯js异步上传文件,并返回上传进度

纯js实现异步上传文件,异步返回文件上传进度,0.05到0.1秒回调一次上传进度,其它详细见代码片段下用法注释

1. 简单的异步上传函数

;(function(window,document){var myUpload = function(option) {var file,fd = new FormData(),xhr = new XMLHttpRequest(),loaded, tot, per, uploadUrl,input;input = document.createElement("input");input.setAttribute('id',"myUpload-input");input.setAttribute('type',"file");input.setAttribute('name',"files");input.click();uploadUrl = option.uploadUrl;callback = option.callback;uploading = option.uploading;beforeSend = option.beforeSend;input.onchange= function(){file = input.files[0];if(beforeSend instanceof Function){if(beforeSend(file) === false){return false;}}fd.append("files", file);xhr.onreadystatechange = function() {if (xhr.readyState == 4 && xhr.status == 200) {if(callback instanceof Function){callback(xhr.responseText);}}}//侦查当前附件上传情况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) {}});

  • 暂无相关文章