java用oss上傳base64圖片

好吧,因?yàn)樽罱谘芯渴褂胦ss。本以為只要做個sts授權(quán)就ok了,不過boss又下新命令。身份證照片,人臉識別等要前端傳給后端base64碼,然后后端再上傳。據(jù)說是為了安全。

首先不要問我前端傳和后端傳的區(qū)別在哪里。學(xué)識淺薄的我解答不了這個問題。只能說是boss交代的。其次為啥不直接穿而是要base64來回來去轉(zhuǎn)。我也回答不了你~~非要說的話,為了安全?我布吉島。

然后因?yàn)楸容^簡單,所以直接上代碼吧。

說明一下,因?yàn)槲覀冞@個參數(shù)決定路徑。所以前面的判斷都是為了確定路徑。干代碼是下面的幾行。

public ResultBean uploadImg(String msgId,String userId,String imgLB,String sname,String img) {

try {

String name = null;

if(msgId==null && "".equals(msgId)) {

if(imgLB==null && "".equals(imgLB)) {

name = "fac/"+ userId +".jpg";

}else {

name = "a/"+ userId +"/"+ imgLB + userId +".jpg";

}

}else {

name = "sign/"+ msgId+ "/"+ sname;

}

//因?yàn)橛械腷ase64生成的時候前面會有前綴。這里是為了去掉,不然傳上去變不成圖片

img = img.split(",")[1];

//將生成的base64碼反編譯回二進(jìn)制字節(jié)碼

BASE64Decoder decoder = new BASE64Decoder();

byte[] file = decoder.decodeBuffer(img);

ObjectMetadata objectMeta = new ObjectMetadata();

objectMeta.setContentLength(file.length);

//將字節(jié)碼轉(zhuǎn)換成流

InputStream input = new ByteArrayInputStream(file);

OSSClient ossClient = new OSSClient(endpoint_upload, accessKeyId_upload, accessKeySecret_upload);

ossClient.putObject(bucketName_upload, name, input,objectMeta);

ossClient.shutdown();

return Tools.result(200, "上傳照片成功", null, true);

} catch (Exception e) {

LOG.info("Error Message: " + e.getMessage());

return Tools.result(500, "上傳照片失敗", null, false);

}

}

然后這里的坑有兩點(diǎn):

1,就是前端傳過來的base64碼。是帶有前綴的。一開始我傻了吧唧的獲取后直接轉(zhuǎn)成byte[]

但是在控制臺查看怎么也不是圖片。然后百度原因居然還有一種說法是base64就是解析不成圖片!我差點(diǎn)就信了~~~哎,最后的最后偶然從一個帖子上看到前綴問題~~試了一下果斷ok了。所以說大哥大姐們~~發(fā)言的時候能不能稍微負(fù)點(diǎn)責(zé)~~哎~~

2,其實(shí)不算坑,可能是我自己太傻了~~就是賬號授權(quán)問題。第一次用的是sts授權(quán)key和密鑰~~然后demo總不成功~~其實(shí)這個問題我在上個oss的使用上也提到了!但是還是忍不住再提一遍!說真的,oss的賬號權(quán)限問題我覺得我能記一輩子~~~印象太深刻~~

剩下的都是小問題,比如說這個路徑要文件夾開始而不能是“/”開頭。

還有base64反編譯的時候BASE64Decoder decoder 這個類可能你引入不進(jìn)來或者出警告線。處理辦法:

右鍵項(xiàng)目——>properties——>Java Build Path——>Libraries——>JRE——>edit——>然后點(diǎn)最下面的Workspace default JRE(JDK). 然后完成執(zhí)行。就ok了~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容