怎么在JavaScript中使用FormData類上傳文件?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
在成都網(wǎng)站制作、成都網(wǎng)站設計、外貿(mào)營銷網(wǎng)站建設中從網(wǎng)站色彩、結構布局、欄目設置、關鍵詞群組等細微處著手,突出企業(yè)的產(chǎn)品/服務/品牌,幫助企業(yè)鎖定精準用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營銷成為有效果、有回報的無錫營銷推廣。成都創(chuàng)新互聯(lián)公司專業(yè)成都網(wǎng)站建設10年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。案例一:xhr.upload.onprogress監(jiān)控文件的上傳進度,并且動態(tài)顯示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .progress { width: 100px; height: 10px; background-color: #eee; } .progress-bar { width: 0; height: 10px; background-color: blue; } </style> </head> <body> <form action="" id="form"> <input type="file" name="file" id="file"> </form> <div class="progress"> <div class="progress-bar" id="bar"></div> </div> <script> var file = document.getElementById("file"); var bar = document.getElementById("bar"); file.onchange = function () { var formData = new FormData(); // 上傳的文件 formData.append('attrName', this.files[0]); var xhr = new XMLHttpRequest(); xhr.open("post", "/upload"); // xhr.upload.onprogress監(jiān)聽上傳進度 xhr.upload.onprogress = function (ev) { // ev.loaded表示上傳了多少,ev.total表示文件的總大小 var result = (ev.loaded / ev.total * 100).toFixed(2) + '%'; // result為進度百分比 bar.style.width = result; bar.innerHTML = result; } xhr.send(formData); xhr.onload = function () { if(xhr.status == 200) { console.log(xhr.responseText); } } } </script> </body> </html>
案例二:服務器端返回上傳路徑,供客戶端預覽上傳的圖片效果
成功預覽我家耶啵的帥照
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .progress { display: inline-block; width: 600px; height: 20px; border-radius: 5px; background-color: #eee; } .progress-bar { width: 0; height: 20px; background-color: orange; border-radius: 5px; font-size: 16px; text-align: center; color: #fff; } </style> </head> <body> <form action="" id="form"> <input type="file" name="file" id="file"> <div class="progress"> <div class="progress-bar" id="bar"></div> </div> </form> <div id="box"></div> <script> var file = document.getElementById("file"); var bar = document.getElementById("bar"); var box = document.getElementById("box"); file.onchange = function () { var formData = new FormData(); // 上傳的文件 formData.append('attrName', this.files[0]); var xhr = new XMLHttpRequest(); xhr.open("post", "/upload"); xhr.upload.onprogress = function (ev) { // ev.loaded表示上傳了多少,ev.total表示文件的總大小 var result = (ev.loaded / ev.total * 100).toFixed(2) + '%'; // result為進度百分比 bar.style.width = result; bar.innerHTML = result; } xhr.send(formData); xhr.onload = function () { if(xhr.status == 200) { var result = JSON.parse(xhr.responseText); var img = document.createElement('img'); img.src = result.path; // 圖片加載完成在進行顯示,否則用戶會看到圖片的加載過程,效果不好 img.onload = function () { box.appendChild(img); } } } } </script> </body> </html>
nodejs服務器端的部分代碼:
app.post('/upload', (req, res) => { // 創(chuàng)建formidable表單解析對象 const form = new formidable.IncomingForm(); // 上傳文件的路徑 form.uploadDir = path.join(__dirname, 'public', 'uploads'); // 上傳文件的后綴名保留 form.keepExtensions = true; // 解析客戶端傳遞過來的FormData對象 form.parse(req, (err, fileds, files) => { // 將文件的地址扒出來以json對象的形式返回給客戶端 res.send({ path: files.attrName.path.split('public')[1] }); }) })
關于怎么在JavaScript中使用FormData類上傳文件問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)成都網(wǎng)站設計公司行業(yè)資訊頻道了解更多相關知識。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網(wǎng)頁標題:怎么在JavaScript中使用FormData類上傳文件-創(chuàng)新互聯(lián)
文章源于:http://aaarwkj.com/article42/ishec.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、虛擬主機、營銷型網(wǎng)站建設、網(wǎng)站導航、網(wǎng)頁設計公司、App設計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)