将 byte[] 转换为 Base64 字符串以表示数据 URI

2022-09-01 04:28:36

我知道这个问题可能已经被问了10000次,但是,我似乎找不到这个问题的直接答案。

我的数据库中存储了一个表示图像的LOB;我从DB获取该图像,我想通过HTML IMG标签将其显示在网页上。这不是我的首选解决方案,但在我找到更好的解决方案之前,这是一个权宜之计。

我正在尝试使用以下方式使用Apache Commons编解码器将byte[]转换为Base64:

String base64String = Base64.encodeBase64String({my byte[]});

然后,我试图在我的页面上显示我的图像,如下所示:

<img src="data:image/jpg;base64,{base64String from above}"/>

它显示浏览器的默认“我找不到此图像”图像。

有人有什么想法吗?

谢谢。


答案 1

我用了这个,它工作正常(与接受的答案相反,它使用不推荐用于此方案的格式):

StringBuilder sb = new StringBuilder();
sb.append("data:image/png;base64,");
sb.append(StringUtils.newStringUtf8(Base64.encodeBase64(imageByteArray, false)));
contourChart = sb.toString();

答案 2

根据官方文档Base64.encodeBase64URLSafeString(byte[] binaryData)应该是你正在寻找的。

JPG 的哑剧类型也是 。image/jpeg