如何使用FormData上傳壓縮裁剪後的圖片Blob物件
在前端頁面,我們通常會遇到需要使用者上傳圖片的操作,可能還會在前端進行圖片編輯的操作(比如頭像的選區裁剪),然後如果圖片過大的話,我們還會對圖片進行壓縮。這些功能我們通常透過Canvas來進行,最後使用Canvas API函式toDataURL來得到圖片的Base64字串,然後當我們要上傳到後臺的時候,會面臨2種選擇:
- 直接將圖片的Base64字串Post到後端進行處理和儲存
- 在前端將Base64字串轉換成二進位制的Blob物件形式,再使用常規的檔案上傳形式(即FormData)來將其上傳到後端
第一種方式對前端來說比較簡單,主要的處理邏輯在後端。而第二種的話前端的工作就稍微複雜一些。考慮到後端採用接收二進位制檔案的方式來處理檔案上傳的情況比較多,所以我們來看一下前面所說的第二種情況在前端怎麼來實現,以下是主要的示例程式碼:
使用FormData上傳壓縮裁剪後的圖片Blob物件
程式碼中值得注意的一點是下面這行程式碼:
formData.append("file", blob, file.name);
如果不傳第三個引數的話,生成的表單資料中,上傳檔案對應的filename會被設定為blob
:
通常情況下這也是沒問題的。但是可能由於後端使用的不同框架或自己的邏輯程式碼的原因,對上傳的檔名做了強制的字尾名檢查,會發生報錯導致上傳失敗,遇到這種情況,請記得使用上面的方式加上第三個引數,這樣問題應該就能迎刃而解了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/75/viewspace-2810882/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- js上傳圖片壓縮JS
- 前端圖片壓縮及上傳前端
- Android壓縮圖片後再上傳圖片Android
- vue 上傳圖片進行壓縮圖片Vue
- JS—圖片壓縮上傳(單張)JS
- Android如何壓縮圖片上傳服務端Android服務端
- 前端的圖片壓縮image-compressor(可在圖片上傳前實現圖片壓縮)前端
- formData原生實現圖片上傳ORM
- layui中實現上傳圖片壓縮UI
- 基於 vue.js 實現圖片本地預覽 + 裁剪 + 壓縮 + 上傳的功能(二)Vue.js
- Vue圖片裁剪上傳元件Vue元件
- 使用tinypng對需要上傳Gitee圖床的圖片進行壓縮Gitee圖床
- PHP結合HTML5使用FormData物件提交表單及上傳圖片PHPHTMLORM物件
- 一個Vue圖片上傳剪裁壓縮元件Vue元件
- 圖片裁剪上傳示例(node + react)React
- java後臺壓縮圖片Java
- ionic3 上傳圖片、壓縮圖片到阿里雲 服務端簽名後直傳阿里服務端
- PbootCMS上傳圖片被壓縮怎麼解決boot
- 小程式踩坑記錄-上傳圖片及canvas裁剪圖片後上傳至伺服器Canvas伺服器
- 基於Ajax的formData圖片和資料上傳ORM
- java,springboot + thymeleaf 上傳圖片、刪除圖片到伺服器、本地,壓縮圖片上傳(有些圖片會失真),原圖上傳JavaSpring Boot伺服器
- 觸屏 H5 如何實現壓縮並上傳多張圖片,同時還可以進行圖片壓縮H5
- android短視訊開發,呼叫相機、相簿,壓縮圖片後上傳Android
- 移動端圖片上傳旋轉、壓縮的解決方案
- 自動壓縮上傳的JPG/PNG圖片Wordpress外掛-TinyPNG
- 開源圖片工具箱(Img Toolbox) 格式轉換 新增水印 圖片壓縮 圖片裁剪 圖片旋轉 圖片縮放
- 專案分享五:H5圖片壓縮與上傳H5
- 基於cropper.js的圖片上傳和裁剪JS
- 請問:如何壓縮圖片,以在網路上傳輸??
- Android 中圖片壓縮分析(上)Android
- HTML5可預覽多圖片ajax上傳(使用formData傳遞資料)HTMLORM
- png格式如何壓縮,圖片壓縮工具哪個好
- vue+element 將圖片壓縮並轉換成base64上傳圖片Vue
- Laravel- 圖片上傳新增自動裁剪功能Laravel
- 圖片裁剪並上傳到阿里雲oss阿里
- uniapp uview 上傳圖片,資料以formData + File 形式傳輸APPViewORM
- 前端圖片壓縮 - H5&Uni-App圖片壓縮前端H5APP
- Retrofit+RxJava上傳圖片上傳圖片到後臺RxJava