將InputStream轉化為base64的實例
InputStream轉化為base64
項目經(jīng)常會用到將文件轉化為base64進行傳輸
怎么才能將文件流轉化為base64呢,代碼如下
/**
* @author 李光光(編碼小王子)
* @date 2018年6月28日 下午2:09:26
* @version 1.0
*/
public class FileToBase64 {
public static String getBase64FromInputStream(InputStream in) {
// 將圖片文件轉化為字節(jié)數(shù)組字符串,并對其進行Base64編碼處理
byte[] data = null;
// 讀取圖片字節(jié)數(shù)組
try {
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100];
int rc = 0;
while ((rc = in.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
data = swapStream.toByteArray();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return new String(Base64.encodeBase64(data));
}
}
把文件流轉base64,然后前端展示base64圖片
java端
項目是基于springboot的。讀取本地圖片,轉成base64編碼字節(jié)數(shù)組字符串,傳到前端。
這種傳輸圖片的方式可以用于Java后臺代碼生成條形碼二維碼,直接轉成base64傳給前臺展示。ps:(在傳給前臺的字符串前要加上data:image/png;base64,,這樣html的img標簽的src才能以圖片的格式去解析字符串)
@RequestMapping("/login")
public String login(Map<String ,Object> map){
byte[] data = null;
// 讀取圖片字節(jié)數(shù)組
try {
InputStream in = new FileInputStream("E://aa.jpg");
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 對字節(jié)數(shù)組Base64編碼
BASE64Encoder encoder = new BASE64Encoder();
// 返回Base64編碼過的字節(jié)數(shù)組字符串
map.put("image","data:image/png;base64,"+ encoder.encode(Objects.requireNonNull(data)));
return "login";
}
html端
用的是thymeleaf模板引擎,只是單純地展示base64編碼的圖片。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>登錄</title>
</head>
<body>
<img th:src="${image}">
</body>
</html>
看效果

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBatch數(shù)據(jù)寫入實現(xiàn)
Spring Batch通過ItemWriter接口及其豐富的實現(xiàn),提供了強大的數(shù)據(jù)寫入能力,本文主要介紹了SpringBatch數(shù)據(jù)寫入實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2025-04-04
Jmeter對響應數(shù)據(jù)實現(xiàn)斷言代碼實例
這篇文章主要介紹了Jmeter對響應數(shù)據(jù)實現(xiàn)斷言代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09
Windows10系統(tǒng)下JDK1.8的下載安裝及環(huán)境變量配置的教程
這篇文章主要介紹了Windows10系統(tǒng)下JDK1.8的下載安裝及環(huán)境變量配置的教程,本文圖文并茂給大家介紹的非常詳細,對大家的工作或學習具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
springboot集成springsession如何實現(xiàn)分布式session共享
這篇文章主要介紹了springboot集成springsession如何實現(xiàn)分布式session共享問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
WebSocket實現(xiàn)系統(tǒng)后臺消息實時通知功能
在現(xiàn)代Web應用中,提供實時通知對于改善用戶體驗至關重要,WebSocket技術允許建立雙向通信通道,從系統(tǒng)后臺將消息實時傳送給系統(tǒng)用戶,下面我們就來深入探討一下如何使用WebSocket來實現(xiàn)這一功能吧2023-10-10

