无法使用HTTP客户端传输图像

时间:2012-06-12 08:38:57

标签: java arrays image http byte

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

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

String imageData = new String(imagebyteArr);

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

imageByteArr = imageData.toByteArray();

结果字节数组被修改为1,其中-127在63上被替换。

如何解决这种意外行为?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我完全劝阻你采用图像字节数组并转换为String,因为你将不得不担心字符编码。

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

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

不要忘记将Content-Type设置为正确的图像。