0

我有一个图像字节数组,我需要使用 HTTP 客户端将其发送到服务器上的 servlet。我们知道如何发送正常的文本数据,但无法发送图像数据。

我们使用以下代码从图像字节数组创建了一个字符串数据:

String imageData = new String(imagebyteArr);

并通过 HTTP 客户端将上述内容发送String到 servlet,但是当我们再次使用以下代码从字符串中检索字节数组时:

imageByteArr = imageData.toByteArray();

生成的字节数组被修改为 1,其中 -127 被替换为 63。

如何解决这种意外行为?

4

2 回答 2

2

字符串被编码。您有 2 个可能性:将二进制数据编码为 base64(例如)发送 base64 并在服务器端解码或使用 PUT 请求进行二进制上传。

于 2012-06-12T08:44:41.580 回答
1

我完全不鼓励您使用图像字节数组并转换为,String因为您将不得不担心字符编码。

要做的一件事是使用 直接发送字节数组ByteArrayEntity,如下所示:

HttpPost post = new HttpPost(url);
post.setEntity(new ByteArrayEntity(bytes));
post.setHeader("Content-type", ""application/octet-stream");

不要忘记Content-Type适当地设置正确的图像。

于 2012-06-12T08:44:09.010 回答