Java 具有多个文件的多部分/表单数据请求:由于奇数字节序列,请求似乎被篡改
我们需要发送一个包含两个文件的Java 具有多个文件的多部分/表单数据请求:由于奇数字节序列,请求似乎被篡改,java,file-upload,multipartform-data,Java,File Upload,Multipartform Data,我们需要发送一个包含两个文件的multipart/formdata请求。因为我们对请求有一些问题,所以我们设置了一个请求bin页面来尝试分析请求本身,因为Postman似乎工作得很好 我的第二个文件由另一个服务以字节流的形式生成,代表一个JSON对象。该字节流的末尾似乎有一个NUL(0)字节终止符 如果我将第二个文件添加到multipart/form data请求中,结果如下: 身体如下所示: --9ac41cec-a0ff-4afd-b687-6b8c2f1bddd6. Content-Di
multipart/formdata
请求。因为我们对请求有一些问题,所以我们设置了一个请求bin页面来尝试分析请求本身,因为Postman似乎工作得很好
我的第二个文件由另一个服务以字节流的形式生成,代表一个JSON
对象。该字节流的末尾似乎有一个NUL
(0)字节终止符
如果我将第二个文件添加到multipart/form data
请求中,结果如下:
身体如下所示:
--9ac41cec-a0ff-4afd-b687-6b8c2f1bddd6.
Content-Disposition: form-data; name="metadata"; filename="metadata-1584981615.json".
Content-Type: application/json.
Content-Length: 581.
.
{"...":"..."}.
--9ac41cec-a0ff-4afd-b687-6b8c2f1bddd6.
Content-Disposition: form-data; name="file"; filename="file-1584981615.json".
Content-Type: application/json.
Content-Length: 12205.
.
{"...":"..."}..
--9ac41cec-a0ff-4afd-b687-6b8c2f1bddd6--.
显然,这是极其无效的。似乎多部分
请求正在每行末尾添加
字符
我能够通过SpringWeb5.1.5.RELEASE
、OKHTTP3.14.7
和ApacheHttpComponents 4.5.7
重现这种行为如果我从字节流中删除NUL
(0)字节终止符,行为似乎不会改变。
奇怪的是:接收Web服务器将此请求作为有效的多部分/表单数据请求接受
请注意,以下是从请求bin的角度(不同的文件
)来看的有效请求(也被Web服务器接受)的外观:
除了在末尾有显式终止符(这似乎根本没有什么区别),字节流看起来没有中断<代码>新字符串(字节)
提供有效的JSON
对象。所以我想一定是别的原因
以前有人遇到过这个问题吗?我不确定如何继续调试这个问题,而且我相当肯定发送不正确的请求,即使远程服务器此时可能会接受它们,几乎肯定会保证我的代码会在某个地方出错
--83611e7f-ad57-4893-9d1b-5ba2c4543d2a
Content-Disposition: form-data; name="metadata"; filename="metadata-1584982345.json"
Content-Type: application/json
Content-Length: 895
{"...": "..."}
--83611e7f-ad57-4893-9d1b-5ba2c4543d2a
Content-Disposition: form-data; name="file"; filename="file-1584982345.json"
Content-Type: application/json
Content-Length: 9868
{"...": "..."}
--83611e7f-ad57-4893-9d1b-5ba2c4543d2a--