代码之家  ›  专栏  ›  技术社区  ›  Waseem

如何以字节形式发送图像,并在同一HTTP请求中一起发送json数据?

  •  0
  • Waseem  · 技术社区  · 7 年前

    我正在尝试以字节形式发送图像,因为base64字符串正在占用带宽。我已经看到了将其作为流传输的示例 https://stackoverflow.com/a/17573179/8359785 但问题是,我不知道如何在同一个http请求下使用它传输json数据

    2 回复  |  直到 7 年前
        1
  •  1
  •   BluEOS    7 年前

    如果需要最大限度地减少带宽使用,只需发送如下数据:

    DataOutputStream dOut = new DataOutputStream(socket.getOutputStream());
    dOut.writeInt(imageBytes.length); 
    dOut.write(imageBytes);
    dOut.writeInt(jsonBytes.length); 
    dOut.write(jsonBytes);
    

    接收代码:

    DataInputStream dIn = new DataInputStream(socket.getInputStream());
    int imageBytesLength = dIn.readInt();  
    byte[] imageBytes= new byte[imageBytesLength];
    dIn.readFully(imageBytes, 0, imageBytesLength); 
    int jsonBytesLength = dIn.readInt();  
    byte[] jsonBytes= new byte[jsonBytesLength ];
    dIn.readFully(jsonBytesLength , 0, jsonBytesLength ); 
    
        2
  •  1
  •   Saif Ahmad    7 年前

    您可以在 JSON 以适应 Byte[] 您的 Image .

    JSON 可能是这样的:

    {
        ...,
    
        "Image": [83, 97, 105, 102, 32, 115, 97, 121, 115, 32, 104, 101, 108, 108, 111],//Byte array of your image
    
        ...
    }