【问题标题】:Unable to transfer image using HTTP client无法使用 HTTP 客户端传输图像
【发布时间】:2012-06-15 03:01:34
【问题描述】:

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

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

String imageData = new String(imagebyteArr);

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

imageByteArr = imageData.toByteArray();

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

如何解决这种意外行为?

【问题讨论】:

    标签: java arrays image http byte


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2016-09-28
        • 1970-01-01
        • 2023-04-01
        • 2021-10-27
        • 1970-01-01
        • 1970-01-01
        • 2018-02-07
        • 1970-01-01
        • 2012-12-01
        相关资源
        最近更新 更多