base64編碼后的圖片轉為MultipartFile 2


使用MultipartFile 就可以接收前端傳輸過來的圖片,但是在某些情況下,前端傳輸的是一段經過Base64編碼過后的圖片字符串,那么就需要再轉換成圖片存儲,在進行保存數據庫(圖片路徑)

 
         

我們都知道,網頁上的圖片資源如果采用http形式的url的話都會額外發送一次請求,網頁發送的http請求次數越多,會造成頁面加載速度越慢。而采用Base64格式的編碼,將圖片轉化為字符串后,圖片文件會隨着html元素一並加載,這樣就可以減少http請求的次數,對於網頁優化是一種比較好的手段。

原文地址:https://www.cnblogs.com/ziyoublog/p/9389050.html。

百度兩個個工具類

public class Base64DecodeMultipartFile implements MultipartFile {

    private final byte[] imgContent; private final String header; public Base64DecodeMultipartFile(byte[] imgContent, String header) { this.imgContent = imgContent; this.header = header.split(";")[0]; } @Override public String getName() { return System.currentTimeMillis() + Math.random() + "." + header.split("/")[1]; } @Override public String getOriginalFilename() { return System.currentTimeMillis() + (int)Math.random() * 10000 + "." + header.split("/")[1]; } @Override public String getContentType() { return header.split(":")[1]; } @Override public boolean isEmpty() { return imgContent == null || imgContent.length == 0; } @Override public long getSize() { return imgContent.length; } @Override public byte[] getBytes() throws IOException { return imgContent; } @Override public InputStream getInputStream() throws IOException { return new ByteArrayInputStream(imgContent); } @Override public void transferTo(File dest) throws IOException, IllegalStateException { new FileOutputStream(dest).write(imgContent); } } /*
     * base64轉multipartFile
     * */
    public static MultipartFile base64Convert(String base64) { String[] baseStrs = base64.split(","); //base64編碼后的圖片有頭信息所以要分離出來 [0]data:image/png;base64, 圖片內容為索引[1]
BASE64Decoder decoder = new BASE64Decoder(); byte[] b = new byte[0]; try { b = decoder.decodeBuffer(baseStrs[1]); //取索引為1的元素進行處理 } catch (IOException e) { e.printStackTrace(); } for (int i = 0; i < b.length; ++i) { if (b[i] < 0) { b[i] += 256; } } return new Base64DecodeMultipartFile(b, baseStrs[0]);//處理過后的數據通過Base64DecodeMultipartFile轉換為MultipartFile對象
}

返回MultipartFile對象

處理過后的照片是沒有后綴的,需要手動拼接上去.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM