溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java怎么實(shí)現(xiàn)后臺(tái)處理base64圖片還原為文件

發(fā)布時(shí)間:2022-02-09 14:27:41 來源:億速云 閱讀:400 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“java怎么實(shí)現(xiàn)后臺(tái)處理base64圖片還原為文件”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“java怎么實(shí)現(xiàn)后臺(tái)處理base64圖片還原為文件”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

后臺(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ù)圖片類型 過濾對(duì)應(yīng)的類型

java Base64解析

最近在業(yè)務(wù)場(chǎng)景中,需要對(duì)第三方傳遞進(jìn)來的字符進(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)解析出來的字符串正確無誤,

但是在上線之后,根據(jù)第三方傳遞的sign,解析出來之后發(fā)現(xiàn)字符串最后多了一個(gè)字符 “7”,查詢邏輯 沒有發(fā)現(xiàn)問題,最后猜測(cè)是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ù)正常,問題解決。

讀到這里,這篇“java怎么實(shí)現(xiàn)后臺(tái)處理base64圖片還原為文件”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI