如何使用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
- 裁剪上傳圖片
- 前端圖片壓縮及上傳前端
- vue 上傳圖片進行壓縮圖片Vue
- 前端的圖片壓縮image-compressor(可在圖片上傳前實現圖片壓縮)前端
- JS—圖片壓縮上傳(單張)JS
- formData原生實現圖片上傳ORM
- layui中實現上傳圖片壓縮UI
- 使用tinypng對需要上傳Gitee圖床的圖片進行壓縮Gitee圖床
- Vue圖片裁剪上傳元件Vue元件
- 移動端使用localResizeIMG4壓縮圖片並上傳
- 一個Vue圖片上傳剪裁壓縮元件Vue元件
- ionic3 上傳圖片、壓縮圖片到阿里雲 服務端簽名後直傳阿里服務端
- 圖片裁剪上傳示例(node + react)React
- java,springboot + thymeleaf 上傳圖片、刪除圖片到伺服器、本地,壓縮圖片上傳(有些圖片會失真),原圖上傳JavaSpring Boot伺服器
- PbootCMS上傳圖片被壓縮怎麼解決boot
- 觸屏 H5 如何實現壓縮並上傳多張圖片,同時還可以進行圖片壓縮H5
- 小程式踩坑記錄-上傳圖片及canvas裁剪圖片後上傳至伺服器Canvas伺服器
- android短視訊開發,呼叫相機、相簿,壓縮圖片後上傳Android
- 開源圖片工具箱(Img Toolbox) 格式轉換 新增水印 圖片壓縮 圖片裁剪 圖片旋轉 圖片縮放
- 上傳圖片 以及做成縮圖
- 自動壓縮上傳的JPG/PNG圖片Wordpress外掛-TinyPNG
- 圖片裁剪並上傳到阿里雲oss阿里
- uniapp uview 上傳圖片,資料以formData + File 形式傳輸APPViewORM
- 基於cropper.js的圖片上傳和裁剪JS
- python 開發一款圖片壓縮工具(四):上傳圖床Python圖床
- png格式如何壓縮,圖片壓縮工具哪個好
- vue+element 將圖片壓縮並轉換成base64上傳圖片Vue
- .Net 圖片縮圖上傳通用方法
- 前端圖片壓縮 - H5&Uni-App圖片壓縮前端H5APP
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- Laravel- 圖片上傳新增自動裁剪功能Laravel
- ??圖片壓縮CanvasCanvas
- canvas 壓縮圖片Canvas
- 圖片壓縮20201109
- 使用 HTML5 Canvas 實現圓形圖片裁剪並上傳HTMLCanvas
- 使用 JavaScript 壓縮和翻轉圖片JavaScript
- H5 和小程式拍照圖片旋轉、壓縮和上傳H5