Base64 编码器截断返回的 Sting

问题描述 投票:0回答:1

我使用数据源 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
string base64 truncated
1个回答
0
投票

格莱兹,

问题似乎不在于字节编码。

你提到过

下面

file
是包含图像的
String
变量。

您检查过文件加载正确吗?

通常,在 Java 中加载二进制文件时不会得到

String
内容。
你如何加载它?你检查过这个字符串的长度吗?

© www.soinside.com 2019 - 2024. All rights reserved.