【发布时间】:2018-07-23 14:28:50
【问题描述】:
我需要将文件发送到包含多部分/混合内容的服务器。例如:
------------------------------1b479dca9c3e
Content-Disposition: form-data; name="one_part"
Content-Type: text/xml; charset=utf-8
XX-Project-Type: METADATA
<?xml version="1.0" encoding="utf-8"?>
<My_MSG version="1">
<MSG date="2014-08-20T18:39:59.154326+00:00">
<METADATA mess_id="sd1212sd05AZ">
<CONVERSION>
<FILE name="foo.bar"/>
<FILE name="ping.pong"/>
<FILE name="abc.def"/>
</CONVERSION>
</METADATA>
</MSG>
</My_MSG>
------------------------------1b479dca9c3e
Content-Disposition: form-data; name="one_part"
Content-Type: text/xml; charset=utf-8
XX-Project-Type: METADATA
<?xml version="1.0" encoding="utf-8"?>
<My_MSG version="1">
<MSG date="2015-08-20T19:39:59.154326+00:00">
<METADATA mess_id="az987456321">
<CONVERSION>
<FILE name="bar.foo"/>
<FILE name="pong.ping"/>
<FILE name="def.abc"/>
</CONVERSION>
</METADATA>
</MSG>
</My_MSG>
------------------------------1b479dca9c3e--
如您所见,多部分边界已定义到要发送的文件中,因此要使用 CURL 发送它,我使用以下命令:
curl -d @/tmp/exemple.file -XPOST http://myServer:8000/multipartService -H "content-type: multipart/Mixed ; boundary=----------------------------1b479dca9c3e"
但是服务器没有成功处理部分。目前我没有服务器的日志,但我执行 tcpdump 以查看发送到服务器的内容:
似乎在发送请求中删除了空格和回车,这可以解释请求内容不能被服务器作为多部分/混合处理......
您知道如何发送符合多部分/混合格式的文件吗?
为 hanshenrik 编辑:
【问题讨论】:
-
只需删除内容类型标题并让 curl 自动为您生成它。那应该工作。我真的很惊讶 curl 解析了您的自定义标题并采用了边界。也删除 -XPOST
-
@hanshenrik 查看我的编辑,默认内容类型回退到 application/x-www-form-urlencoded :/