如何将图像作为字节发送,并在同一HTTP请求中一起发送json数据?

时间:2018-01-09 12:01:42

标签: java image http base64 transfer

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

2 个答案:

答案 0 :(得分:1)

您可以在JSON中添加一个字段,以容纳Byte[]的{​​{1}}。

Image可能是这样的:

JSON

答案 1 :(得分:1)

如果您需要将带宽使用量降至最大,请发送如下数据:

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 );