说真的。
有一段时间我一直在努力寻找这个难题的答案。
如果对String进行编码,请求大小太大,公司无论如何也不会采用Base64。他们实际上想要二进制代码,但是是 JSON 格式的。任何人都可以阐明他们认为其他人可能会如何做到这一点吗?目前我正在这样处理;
String addressProof = null;
if (proofRequired)
{
Part filePart = request.getPart("proof_of_address");
addressFileName = getSubmittedFileName(filePart);
InputStream fileContent = filePart.getInputStream();
final byte[] bytes = IOUtils.toByteArray(fileContent);
addressProof = new String(bytes);
//byte[] bytes64 = Base64.encodeBase64(fileBytes);
//addressProof = new String(fileBytes);
fileContent.close();
}
是我太迟钝了,还是这整个请求有点缺陷。
非常感谢。
最佳答案
您可以将其作为十六进制字符串发送(或接收)。请参阅how-to-convert-a-byte-array-to-a-hex-string-in-java .
示例输出为(如果包含在 JSON 对象中):
{
"content": "C5192E4190E54F5985ED09C6CD0D4BCC"
}
或者只是普通的十六进制字符串:“C5192E4190E54F5985ED09C6CD0D4BCC”
您不必一次写(或读)所有内容。您可以打开两个流(输入和输出),然后传输数据。从文件到响应输出流或从请求输入流到文件。
抱歉,我不确定您是否想发送字节或接收字节。
关于java - 当公司不接受 Base64 但坚持 JSON API 调用时如何传输二进制 pdf 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43846000/