久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

javascript - 如何使用formData上傳file數(shù)組

瀏覽:133日期:2023-02-21 09:34:42

問(wèn)題描述

因?yàn)?input type=‘file’ 再次點(diǎn)擊會(huì)將之前的fileList覆蓋,所以我先將選中的文件轉(zhuǎn)成base64作為預(yù)覽圖片,類(lèi)似于這樣,可以多次添加

javascript - 如何使用formData上傳file數(shù)組

但是我在上傳的時(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)沒(méi)有接受到 files 參數(shù)。

問(wèn)題解答

回答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ù)有沒(méi)有

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 内江市| 鸡西市| 永年县| 宜黄县| 罗甸县| 金寨县| 德庆县| 怀宁县| 彰化县| 腾冲县| 滦平县| 平山县| 余庆县| 南汇区| 绥江县| 安平县| 永德县| 南宫市| 拉萨市| 恩平市| 来宾市| 黄冈市| 桦南县| 珠海市| 新晃| 尚志市| 云霄县| 华池县| 甘谷县| 营山县| 吉木乃县| 麻栗坡县| 湖北省| 汾西县| 泉州市| 定日县| 益阳市| 汉阴县| 澳门| 噶尔县| 仲巴县|