Java 无法使用HTTP客户端传输映像

Java 无法使用HTTP客户端传输映像,java,arrays,image,http,byte,Java,Arrays,Image,Http,Byte,我有一个图像字节数组,需要使用HTTP客户端将其发送到服务器上的servlet。我们知道如何发送普通文本数据,但无法发送图像数据 我们使用以下代码从图像字节数组创建字符串数据: String imageData = new String(imagebyteArr); 并通过HTTP客户端将上述字符串发送到servlet,但当我们再次使用以下代码从字符串中检索字节数组时: imageByteArr = imageData.toByteArray(); 结果字节数组修改为1,其中in-127替换

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

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

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

imageByteArr = imageData.toByteArray();
结果字节数组修改为1,其中in-127替换为63


如何解决这种意外行为?

我完全不鼓励您拍摄图像字节数组并转换为
字符串,因为您将不得不担心字符编码

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

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

不要忘记将您的
内容类型
适当地设置为正确的图像。

我完全不鼓励您拍摄图像字节数组并转换为
字符串
,因为您将不得不担心字符编码

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

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

不要忘记将
内容类型设置为正确的图像。

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

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