使用XHR上傳文件要不要了解一下?


上傳文件 我們通過File API 能夠訪問到文件內容,然后把文件內容放到send()方法中,再通過POST請求,的確很容易就能實現上傳。但這樣做傳遞的是文件內容,因而服務器還得收集提交的內容,然后保存到另外一個文件中。其實,更好的做法是以表單提交方式來上傳文件。

表單方式上傳?沒錯!formData類型做這個很容易,分分鍾幾千萬上下啦。 首先,要創建一個FormData對象,通過它調用append()方法傳入相應的File對象作為參數。然后,再把FormData對象傳遞給XHR的send()方法,結果與通過表單上傳一摸一樣。

let droptarget = document.getElementById('droptarget'); function handleEvent(event) { var info = '', output = document.getElementById('output'), data, xhr, files, i, len; EventUtil.preventDefault(event); if(event.type == 'drop') { data = new FormData(); files = event.dataTransfer.files; i = 0; len = files.length; while(i < len) { data.append("file" + i, files[i]); i ++; } xhr = new XMLHttpRequest(); xhr.open("post","FileUpload.php",true); xhr.onreadystatechange = function() { if(xhr.readyState == 4) { alert(xhr.responseText); } }; xhr.send(data); } } EventUtil.addHandler(droptarget, 'dragenter', handleEvent); EventUtil.addHandler(droptarget,'dragover',handleEvent); EventUtil.addHandler(droptarget, 'dragover',handleEvent); 

我們這里創建一個formData對象,與每個文件對應的鍵分別是file0,file1,file2,這樣的格式。注意不用寫額外的代碼,只要傳入File對象即可。 掃碼加群,每日更新一篇前端技術文章一起成長。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM