第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JS圖片壓縮并且以文件形式上傳

JS圖片壓縮并且以文件形式上傳

慕的地6264312 2018-11-14 13:13:42
WEBKIT中使用JS圖片壓縮上傳.在選擇圖片時將圖片壓縮,取得圖片BASE64數(shù)據(jù),然后再提交表單時將圖片以File的形式上傳,已經(jīng)取到BASE數(shù)據(jù),但是上傳的文件也是BASE64數(shù)據(jù)并不能直接使用File上傳以 multipart/form-data 的方式進(jìn)行上傳問題在于' 上傳的文件也是BASE64數(shù)據(jù)并不能直接使用File '希望能得到解決問題的建議,或者更好上傳的方式('在以 multipart/form-data 方式上傳的前提下')
查看完整描述

1 回答

?
桃花長相依

TA貢獻(xiàn)1860條經(jīng)驗 獲得超8個贊

為什么要自己拼 form-data 呢,既然都用了 canvas 壓縮了,那瀏覽器肯定已經(jīng)支持 formData了啊。

方法一 使用 formData API 而非自己拼接

var xhr = new XMLHttpRequest();
xhr.open('POST', '/upload', true);var formData = new FormData();
formData.append(name, value);
formData.append(name, fileBlob, filename);

xhr.send(formData);

方法二 自己拼

壓縮使用的是 canvas,調(diào)用canvas的toBlob對象,然后使用fileReader的readAsBinaryString方法,得到blob對象的二進(jìn)制字符串,這個二進(jìn)制字符串才是 formdata 的content-disposition下面要填的東西。

你那個代碼有點亂,看樣子 imageView.attr('src') 是拿到了壓縮后圖片的 base64 的 dataURI,看有沒有方法能直接拿到 binary String,如果不能,能獲得壓縮后的圖片的 blob 對象也行,自己用 fileReader 轉(zhuǎn)換一下,再不行就用你的 dataURItoBlob 對象把 base64 的 dataURI 轉(zhuǎn)換成blob,再轉(zhuǎn)換成二進(jìn)制字符串。

bodyData += imageUrl === null ? '' : dataURItoBlob(imageUrl);

// 這一句要改成


var resizedImageBlob = dataURItoBlob(imageUrl);

var reader = new FileReader();

reader.onloadend = function () {

  bodyData += this.result;

};

reader.readAsBinaryString(resizedImageBlob);


// 鑒于你代碼本身有一個each循環(huán),bodyData 最后還要 append 一個 boundary因為把 blob 轉(zhuǎn)成二進(jìn)制字符串的過程是異步的,這里的控制邏輯肯定要修改


查看完整回答
反對 回復(fù) 2018-12-14
  • 1 回答
  • 0 關(guān)注
  • 696 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號