我碰到這個純JS AJAX上傳代碼來了(似乎jQuery的$.post
不與HTML5工作,出於某種原因),HTML5 AJAX多文件上傳
/* If you want to upload only a file along with arbitary data that
is not in the form, use this */
var fd = new FormData();
fd.append("file", document.getElementById('file').files[0]);
/* If you want to simply post the entire form, use this */
//var fd = document.getElementById('form1').getFormData();
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("POST", "Upload.php");
xhr.send(fd);
不過我這裏有兩個問題,
- 這條線意味着對象
FormData
後有什麼意思?
fd.append("file", document.getElementById('file').files[0]);
爲什麼我需要有一個ID?我可以使用jquery append()
和$('input[type=file]')
嗎?
- 此ajax僅適用於單個文件上傳,我怎樣才能更改它爲多個文件上傳?
感謝您的回答!我可以問一下 - 'files.length'它是從哪裏得到的?我應該在這個'for()'之前設置什麼,以便我可以執行'files.length'?謝謝! – laukok
當我使用for()的答案時,出現'files is not defined'這個錯誤... – laukok
呃,只要從用戶指定了多個文件的地方得到它? – BalusC