java實現(xiàn)后臺處理base64圖片還原為文件
后臺處理base64圖片還原為文件
/**
* 將base64圖片解析成文件存放本地
* @param imgStr
* @return 本地臨時文件的地址
*/
private static String generateImage(String imgStr){
if(Strings.isNullOrEmpty(imgStr)){
return null;
}
BASE64Decoder decoder = new BASE64Decoder();
//轉(zhuǎn)換前端數(shù)據(jù)
imgStr = imgStr.replaceAll(" ", "+");
//去除多余部分
imgStr=imgStr.replace("data:image/png;base64,", "");
try {
// Base64解碼
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; i++) {
if (b[i] < 0) {// 調(diào)整異常數(shù)據(jù)
b[i] += 256;
}
}
String filepath =System.getProperty("java.io.tmpdir") +"測試"+System.currentTimeMillis()+".png";
File file = new File(filepath);
if(file.exists()){
file.delete();
}
FileOutputStream fos = new FileOutputStream(file);
fos.write(b);
fos.flush();
fos.close();
logger.info("路徑"+filepath);
return filepath;
}catch(Exception e){
return null;
}
}
//imgStr=imgStr.replace(“data:image/png;base64,”, “”); 關(guān)鍵地方 根據(jù)圖片類型 過濾對應(yīng)的類型
java Base64解析
最近在業(yè)務(wù)場景中,需要對第三方傳遞進來的字符進行base64解密,根據(jù)第三方文檔提供的解析工具,對數(shù)據(jù)進行了解析
關(guān)于Base64的解析方式如下
?String sign = "xxxxxxxxxxxxxxxxxxxxxxxx"; ?sun.misc.BASE64Decoder decode = new sun.misc.BASE64Decoder(); ?String json = new String(decode.decodeBuffer(sign));
使用sun.misc.BASE64Decoder對數(shù)據(jù)解析,放測試環(huán)境測試發(fā)現(xiàn)解析出來的字符串正確無誤,
但是在上線之后,根據(jù)第三方傳遞的sign,解析出來之后發(fā)現(xiàn)字符串最后多了一個字符 “7”,查詢邏輯 沒有發(fā)現(xiàn)問題,最后猜測是sun.misc.BASE64Decoder出了問題,于是換了Base64的解析jira
使用如下代碼解析
String sign = "xxxxxxxxxxxxxxxxxxxxxxxxx"; Base64 base64 = new Base64(); String json = new String (base64.decodeBase64(sign.getBytes()));
發(fā)現(xiàn)返回json中數(shù)據(jù)正常,問題解決。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java數(shù)據(jù)結(jié)構(gòu)之順序表和鏈表精解
我在學習完順序表后一直對順序表和鏈表的概念存在一些疑問,這里給出一些分析和看法,通讀本篇對大家的學習或工作具有一定的價值,需要的朋友可以參考下2021-09-09
Java concurrency線程池之線程池原理(一)_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了Java concurrency線程池之線程池原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06
Effective Java 在工作中的應(yīng)用總結(jié)
《Effective Java》是一本經(jīng)典的 Java 學習寶典,值得每位 Java 開發(fā)者閱讀。下面文章即是將書中和平日工作較密切的知識點做了部分總結(jié),需要的朋友可以參考下2021-09-09
有關(guān)ServletConfig與ServletContext的訪問
下面小編就為大家?guī)硪黄嘘P(guān)ServletConfig與ServletContext的訪問。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01
springmvc json類型轉(zhuǎn)換錯誤解決方案
這篇文章主要介紹了springmvc json類型轉(zhuǎn)換錯誤解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12

