說下背景,項目中遇到前端js獲取圖片發生跨域的問題,服務器端又不支持匿名訪問,只能通過服務器獲取圖片base64碼進行展示。代碼如下:下載
/**
* 遠程讀取p_w_picpath轉換爲Base64字符串
* @param imgUrl
* @return
*/
private String Image2Base64(String imgUrl) {
URL url = null;
InputStream is = null;
ByteArrayOutputStream outStream = null;
HttpURLConnection httpUrl = null;
try{
url = new URL(imgUrl);
httpUrl = (HttpURLConnection) url.openConnection();
httpUrl.connect();
httpUrl.getInputStream();
is = httpUrl.getInputStream();
outStream = new ByteArrayOutputStream();
//創建一個Buffer字符串
byte[] buffer = new byte[1024];
//每次讀取的字符串長度,如果爲-1,代表全部讀取完畢
int len = 0;
//使用一個輸入流從buffer裏把數據讀取出來
while( (len=is.read(buffer)) != -1 ){
//用輸出流往buffer裏寫入數據,中間參數代表從哪個位置開始讀,len代表讀取的長度
outStream.write(buffer, 0, len);
}
// 對字節數組Base64編碼
return new BASE64Encoder().encode(outStream.toByteArray());
}catch (Exception e) {
e.printStackTrace();
} 下載
finally{
if(is != null)
{
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(outStream != null)
{
try {
outStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(httpUrl != null)
{
httpUrl.disconnect();
}
}
return imgUrl;
}