<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta charset="utf-8" /> <meta name="referrer" content="never"> <title>html5 上传文件及上传真实进度</title> </head> <body> <p>这是是浏览器上传的进度,与后台无关,就算后台拒绝也没关系</p> <hr /> <input type="file" id="file"> <p id="per"></p> </body> </html>
body { color: deeppink; }
document.getElementById('file').onchange = function () { if (this.files.length) { var file = this.files[0]; console.debug(file); var fd = new FormData(); fd.append('file', file); //上传 var xhr = new XMLHttpRequest(); xhr.upload.onprogress = function (event) { if (event.lengthComputable) { //上传百分比 var per = (event.loaded / event.total) * 100; per = per.toFixed(2) + " %"; document.getElementById('per').innerHTML = per; console.log(per); } }; xhr.open("post", "//upload.qiniup.com", true); xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); xhr.send(fd); xhr.onreadystatechange = function (e) { if (xhr.readyState == 4) { if (xhr.status == 200) { console.log(xhr.responseText) } else { console.log('上传失败'); } } } } }