그것은 IE (모든 버전)을 제외하고 지금은 대부분 모든 웹 브라우저를 통해 가능하다.
자바 스크립트는 매우 간단합니다. 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';
}
나는 재미있는 능력을 가진 사이트에 진행률 막대를 표시하는 코드도 있습니다.
+1 "표준 API 없음". 그러나 진도 정보를 제공하려면 서버 지원이 여전히 필요하다는 귀하의 주장에 동의하지 않습니다. 전송할 전체 바이트 중 얼마나 많은 부분이 전송을 위해 TCP에 넘겨 졌는지 알면 의미있는 충분한 진행률 막대가 제공됩니다. – AnthonyWJones
추측 할 필요가 없습니다. 이 데이터는 모든 브라우저 소프트웨어 팀을 포함하는 Berkeley Sockets TCP 클라이언트를 강타 할 수있는 모든 사람이 쉽게 사용할 수 있습니다. – Sniggerfardimungus