javascript - 如何使用formData上傳file數(shù)組
問題描述
因?yàn)?input type=‘file’ 再次點(diǎn)擊會(huì)將之前的fileList覆蓋,所以我先將選中的文件轉(zhuǎn)成base64作為預(yù)覽圖片,類似于這樣,可以多次添加
但是我在上傳的時(shí)候如何將多個(gè)預(yù)覽圖片添加到 formdata 對(duì)象中,后臺(tái)接受參數(shù)是一個(gè) MultipartFile[] files 數(shù)組。
下面是我的錯(cuò)誤做法:
function getImgFiles() { var imgFiles = []; var imgs = $(’img’); $.each(imgs, function (i, item) {var blob = dataURItoBlob(item.src);imgFiles.push(new File([blob], item.id)); }); return imgFiles;}/** * base64->blob * @param dataURI * @returns {Blob} */function dataURItoBlob(dataURI) { var byteString = atob(dataURI.split(’,’)[1]); var mimeString = dataURI.split(’,’)[0].split(’:’)[1].split(’;’)[0]; var ab = new ArrayBuffer(byteString.length); var ia = new Uint8Array(ab); for (var i = 0; i < byteString.length; i++) {ia[i] = byteString.charCodeAt(i); } return new Blob([ab], {type: mimeString});}var formData = new FormData($(’form’).get(0));formData.append(’files’, getImgFiles());//然后使用ajax上傳,但是后臺(tái)沒有接受到 files 參數(shù)。
問題解答
回答1:可以有以下幾種做法:
$.each(getImgFiles(), function(i, file){ formData.append(’files’, file);});
$.each(getImgFiles(), function(i, file){ formData.append(’files[]’, file);});
$.each(getImgFiles(), function(i, file){ formData.append(’files_’ + i, file);});
都應(yīng)該可以在后臺(tái)接收到文件。而具體用哪種做法要看你后臺(tái)所使用的語(yǔ)言和框架。
就PHP而言,我喜歡最后一種,可以用 $_FILES 一次遍歷就能獲取到所有的文件/圖片。
回答2:每次把文件轉(zhuǎn)出base64的時(shí)候,順帶也出個(gè)blob,順手append到你的formData結(jié)構(gòu)里就行了。
另外我記得input可以支持多選的吧?
回答3:你先F12在network里面看看這條請(qǐng)求里面的參數(shù)有沒有
相關(guān)文章:
1. android - NavigationView 的側(cè)滑菜單中如何保存新增項(xiàng)(通過程序添加)2. tp5 不同控制器中的變量調(diào)用問題3. 微信小程序可以用gulp,webpack嗎?4. mysql服務(wù)無(wú)法啟動(dòng)1067錯(cuò)誤,誰(shuí)知道正確的解決方法?5. ueditor上傳服務(wù)器提示后端配置項(xiàng)沒有正常加載,求助!!!!!6. python - 為什么正常輸出中文沒有亂碼,zip函數(shù)之后出現(xiàn)中文編程unicode編碼的問題,我是遍歷輸出的啊。7. 老師 我是一個(gè)沒有學(xué)過php語(yǔ)言的準(zhǔn)畢業(yè)生 我希望您能幫我一下8. 這段代碼既不提示錯(cuò)誤也看不到結(jié)果,請(qǐng)老師明示錯(cuò)在哪里,謝謝!9. php7.3.4中怎么開啟pdo驅(qū)動(dòng)10. 提示語(yǔ)法錯(cuò)誤語(yǔ)法錯(cuò)誤: unexpected ’abstract’ (T_ABSTRACT)
