根據URL獲取圖片
背景:今天因為生產環境的系統介面圖片無法顯示被領導叼了一波,之前用Hutool工具類解析URL獲取圖片的,在生產環境上跑了一個多月都正常,嘣,今天突然發現週六下午後的圖片統統顯示異常,之後改為用java原始HttpConnection的方式解析URL獲取圖片OK。
簡單的說下專案的業務邏輯&我當事人的想法:
1、首先,這個URL圖片地址是專案上游合作伙伴通過訊息佇列傳送給我的,然後我再把URL轉為base64,接著把轉好的base64上傳到一個檔案儲存伺服器中,這時可以通過Key和Object的組合從檔案伺服器中下載以上傳的圖片,然後就利用WebSocket推送Key和Object的值給前端請求展示圖片;
2、為什麼我要用Hutool工具類呢?因為用它把URL轉換為base64就一行程式碼搞定,兩行算我輸;
3、為什麼之前用Hutoo可以,過了一個多月就突然涼涼了呢?這也是我蛋疼的地方,為了保密一些,下面URL部分是假的;
之前合作伙伴給我提供的URL格式如:image_url:https://xxxxxx.com:666/xxxxxxxx/xxxx/xxpic/xxxxxxxxxx
如今合作伙伴給我提供的URL格式如:image_url:https://xxxxxx.com:666/xxxxxxxx/xxxx/xxpic/xxxxxxxxxx?AWSAccessKeyId=XXXXX&Expires=xxxx&Signature=xxxxx
小老弟們一看就知道現在的URL增加了簽名和失效時間等資訊,然後我那Hutool就玩不動了(求大神指導)。
4、雖然上游的合作伙伴沒有提前告知我他們給我的URL格式內容變了,但這也不能怪他們,因為他們提供的這個地址在瀏覽器中訪問的的確確可以得到一串base64位元組碼,並且這串base64也可以在瀏覽器正常轉化為圖片顯示,最重要的是用HttpConnection解析該URL結果也OK;
5、雖然這個問題算是我的鍋,但是被痛叼了一波,還是有點不服,奈何外包公司就是這樣“沒能力好好幹,有能力給我滾蛋”!過完春節不辭職算我輸(求收留)。
FYI:
如圖所示,Java本身提供的原始HttpURLConnection方法可以解析加了簽名的URL,SO溫馨提示大家以後可以慎用Hutool工具類,同時也希望走過路過的朋友可以指導一波,怎麼用Hutool解析URL獲取圖片base64。