您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“如何使用Html5實現(xiàn)異步上傳文件,支持跨域,帶有上傳進度條”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何使用Html5實現(xiàn)異步上傳文件,支持跨域,帶有上傳進度條”這篇文章吧。
服務器準備IIS
需要設置IIS里面的HTTP響應標頭,如圖添加如下設置,添加這項“Access-Control-Allow-Origin”,只有添加了這行才能支持跨域,不然像Chrome瀏覽器會報錯
頁面代碼:
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <meta name="format-detection" content="telephone=no"> <meta name="msapplication-tap-highlight" content="no"> <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"> <title>Html5上傳文件</title> </head> <body> <div class="app"> <h2>Html5上傳文件測試,帶進度條</h2> <div> <input type="file" value="" id="fileInput" name="files" onchange="fileSelected()" /> <div style="margin:30px;"> <input type="button" value="上傳" onclick="uploadFile()" /> </div> <div style="margin:30px;"> <div id="fileName"></div> <div id="fileSize"></div> <div id="fileType"></div> </div> <div style="margin:30px;width:500px;height:15px;border:1px solid #aeaeae;"> <div id="progress" style="background:#4cff00;height:15px;width:0%;"></div> <div id="percentNumber"></div> </div> <div style="margin:30px;"> <div id="msg"></div> </div> </div> </div> <script type="text/javascript"> function fileSelected() { //重置狀態(tài)顯示 document.getElementById("msg").innerHTML = ""; document.getElementById('percentNumber').innerHTML = ''; document.getElementById("progress").style.width = "0%"; var file = document.getElementById('fileInput').files[0]; if (file) { var fileSize = 0; if (file.size > 1024 * 1024) fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB'; else fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB'; document.getElementById('fileName').innerHTML = 'Name: ' + file.name; document.getElementById('fileSize').innerHTML = 'Size: ' + fileSize; document.getElementById('fileType').innerHTML = 'Type: ' + file.type; } } function uploadFile() { var fd = new FormData(); fd.append("fileInput", document.getElementById('fileInput').files[0]); 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", "http://10.0.0.200:9001/Home/Upload");//修改為自己服務器接口地址 //xhr.setRequestHeader("Access-Control-Allow-Origin", "*");//需要在IIS里面配置,就可以跨域請求了 //xhr.setRequestHeader("Content-Type", "multipart/form-data"); xhr.send(fd); } function uploadProgress(evt) { if (evt.lengthComputable) { var percentComplete = Math.round(evt.loaded * 100 / evt.total); document.getElementById('percentNumber').innerHTML = percentComplete + '%'; var jindutiao = document.getElementById("progress"); jindutiao.style.width = percentComplete + "%"; } else { document.getElementById('percentNumber').innerHTML = '不支持進度計算'; } } function uploadComplete(evt) { //evt.target.responseText document.getElementById("msg").innerHTML = "上傳成功"; } function uploadFailed(evt) { document.getElementById("msg").innerHTML = "上傳過程中有一個錯誤"; } function uploadCanceled(evt) { document.getElementById("msg").innerHTML = "用戶取消了上傳或者瀏覽器刪除了連接"; } </script> </body> </html>
以上是“如何使用Html5實現(xiàn)異步上傳文件,支持跨域,帶有上傳進度條”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。