java實(shí)現(xiàn)后臺(tái)處理base64圖片還原為文件
后臺(tái)處理base64圖片還原為文件
/**
* 將base64圖片解析成文件存放本地
* @param imgStr
* @return 本地臨時(shí)文件的地址
*/
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") +"測(cè)試"+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ù)圖片類型 過(guò)濾對(duì)應(yīng)的類型
java Base64解析
最近在業(yè)務(wù)場(chǎng)景中,需要對(duì)第三方傳遞進(jìn)來(lái)的字符進(jìn)行base64解密,根據(jù)第三方文檔提供的解析工具,對(duì)數(shù)據(jù)進(jìn)行了解析
關(guān)于Base64的解析方式如下
?String sign = "xxxxxxxxxxxxxxxxxxxxxxxx"; ?sun.misc.BASE64Decoder decode = new sun.misc.BASE64Decoder(); ?String json = new String(decode.decodeBuffer(sign));
使用sun.misc.BASE64Decoder對(duì)數(shù)據(jù)解析,放測(cè)試環(huán)境測(cè)試發(fā)現(xiàn)解析出來(lái)的字符串正確無(wú)誤,
但是在上線之后,根據(jù)第三方傳遞的sign,解析出來(lái)之后發(fā)現(xiàn)字符串最后多了一個(gè)字符 “7”,查詢邏輯 沒(méi)有發(fā)現(xiàn)問(wèn)題,最后猜測(cè)是sun.misc.BASE64Decoder出了問(wèn)題,于是換了Base64的解析jira
使用如下代碼解析
String sign = "xxxxxxxxxxxxxxxxxxxxxxxxx"; Base64 base64 = new Base64(); String json = new String (base64.decodeBase64(sign.getBytes()));
發(fā)現(xiàn)返回json中數(shù)據(jù)正常,問(wèn)題解決。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java本服務(wù)如何調(diào)用本服務(wù)接口
這篇文章主要介紹了java本服務(wù)如何調(diào)用本服務(wù)接口問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
如何解決Spring的UnsatisfiedDependencyException異常問(wèn)題
這篇文章主要介紹了如何解決Spring的UnsatisfiedDependencyException異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
使用lombok的@Data會(huì)導(dǎo)致棧溢出StackOverflowError問(wèn)題
這篇文章主要介紹了使用lombok的@Data會(huì)導(dǎo)致棧溢出StackOverflowError問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
Spring Security在標(biāo)準(zhǔn)登錄表單中添加一個(gè)額外的字段
這篇文章主要介紹了Spring Security在標(biāo)準(zhǔn)登錄表單中添加一個(gè)額外的字段,我們將重點(diǎn)關(guān)注兩種不同的方法,以展示框架的多功能性以及我們可以使用它的靈活方式。 需要的朋友可以參考下2019-05-05
Mybatis-plus如何提前獲取實(shí)體類用雪花算法生成的ID
本文主要介紹了Mybatis-plus如何提前獲取實(shí)體類用雪花算法生成的ID,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07

