我使用数据源 URL 在 HTML img 标签中显示图像文件,其中包含编码格式的 64 字节图像数据。
当我从编码字节中获取字符串时,它终止于应该在 100k 左右的少数字符。我有一个你自己的编码例程,是我从某个地方提取的,它工作正常,尽管很慢。
下面的
file
是包含图像的String
变量。我还尝试传递输入流进行编码并获得相同的结果。我尝试过encode().toString()
和encodeToString()
。也试过new String(bytes, “UTF-8”)
。
我不明白为什么
Base64.encodeToString
会截断返回的 ASCII 字符串。任何帮助将不胜感激。
使用Java和JSP。
String thumbUrl = "data:image/jpeg;base64," + Base64.getEncoder().encodeToString(file.getBytes());
<img style="width:200px;" src="<%= thumbUrl %>" />
更新:演示问题的代码和输出。
byte[] temp = fileParam.value.getBytes();
System.out.println("input len: " + temp.length);
temp = Base64.getEncoder().encode(temp);
System.out.println("enc len: " + temp.length);
System.out.println("enc string len: " + temp.toString().length());
String myEncString = NetHelper.encodeBase64(fileParam.value);
System.out.println("my encoder string len: " + myEncString.length());
Output:
input len: 3493
enc len: 4660
enc string len: 10 <<< BAD string returned
my encoder string len: 4660
格莱兹,
问题似乎不在于字节编码。
你提到过
下面
是包含图像的file
变量。String
您检查过文件加载正确吗?
通常,在 Java 中加载二进制文件时不会得到
String
内容。