最近碰到个需求,需要使用js上传文件,一般上传文件都是使用表单,并为使用过js上传,这次在这记录一下。
之前网上说使用jquery插件jqueryajaxupload.js。用下来发现坑巨多,果断舍弃,换用原生的HTML5来做上传。具体思想就是创建一个FormData对象,将file标签的值设进formdata对象里面去,再使用xmlhttprequest上传,同时在xhr中添加监听器获取回调。
代码如下:
function uploadFile() {
var fd = new FormData();
fd.append('fileType', 2);
fd.append("file", $('#diverCeriticate')[0].files[0]);
var xhr = new XMLHttpRequest();
//xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.open("POST", UPLOAD_FILE_URL);
xhr.send(fd);
}
function uploadComplete(e) {
//e.target.responseText 为上传结果
var json = JSON.stringify(JSON.parse(e.target.responseText), null,'');
alert("json"+json);
}
function uploadFailed(e) {
alert(e);
}