1.舍去form表单改为使用新型的formData进行传输
<input type="file" id="file" class="mr10 ml10 input-medium">3.ajax实现上传:
function uploadSaveProjects(obj){ var fileObj = document.getElementById("file").files[0]; // 获取文件对象 var FileController = baseUrl + "project/upload"; // 接收上传文件的后台地址 // FormData 对象 var form = new FormData(); form.append("author","hooyes"); // 可以增加表单数据 form.append("file",fileObj); // 文件对象 // XMLHttpRequest 对象 var xhr = new XMLHttpRequest(); xhr.open("post",FileController,true); xhr.onload = function () { alert("上传完成!"); }; // 实现进度条功能 // xhr.upload.addEventListener("progress",progressFunction,false); xhr.send(form); }
4.后台可以使用任何语言接受进行上传,增加一个进度条,使用h5标签
<progress id="progressBar" value="0" max="100"></progress> <span id="percentage"></span>
5.增加对进度条的控制js事件
function progressFunction(evt) { var progressBar = document.getElementById("progressBar"); var percentageDiv = document.getElementById("percentage"); if (evt.lengthComputable) { progressBar.max = evt.total; progressBar.value = evt.loaded; percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%"; } }
6.formData到底是个什么东西?
XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的send()方法来异步的提交这个"表单".比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件.
所有主流浏览器的较新版本都已经支持这个对象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。
详细介绍:http://www.cnblogs.com/lhb25/p/html5-formdata-tutorials.html