现在除了 IE(所有版本)之外,几乎所有的网络浏览器都可以。
JavaScript 相当简单。检查 sourceforge.net 上的 webfolder 项目。它显示所有支持 HTML5 的浏览器的上传百分比。
function upload() {
document.folder.encoding = "multipart/form-data";
if (document.folder.file.files) {
var xhr = new XMLHttpRequest();
var fd = new FormData(document.folder);
/* event listeners */
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false); // loadend if doesn't matter success or not
xhr.addEventListener("error", uploadError, false);
xhr.open("POST", document.folder.action, true);
fd.append('submit', 'Upload'); // keep consistent with view, so maybe return method in view
fd.append('background', '1');
xhr.send(fd);
return false;
}
return true;
}
function uploadProgress(evt) {
if (evt.lengthComputable) {
var per = (evt.loaded*100/evt.total).toFixed(0)+'%';
getElement('_progress').innerHTML = per;
document.title = 'Upload ('+per+')';
} else {
getElement('_progress').innerHTML = evt.loaded;
}
}
function uploadComplete(evt) {
getElement('_progress').innerHTML = '100%';
window.location.reload();
}
function uploadError(evt) {
getElement('_progress').innerHTML = 'error';
}
我还有代码显示具有更多娱乐能力的网站的进度条。