我正在使用curl命令向web服务发送一个大文件(100 MB以上)。我注意到,只有当我使用curl将文件发送到web服务时,文件才会被破坏,数据也会丢失。
这是我用来发送文件的命令:
curl -v --raw -X POST -H "Transfer-Encoding: chunked" -H "Content-Type: text/xml; charset=UTF-8" -d @medline16n0736.xml "http://localhost:2323/TestWebService"
我是不是错过了什么?我认为告诉它使用text/xml
和charset=UTF-8
会在web服务接收到它后保持UTF-8。
您要求curl使用-d
选项发布XML文件,该选项将像通过application/x-www-webform-urlencoded
格式的HTTP Web表单提交文件一样发布该文件。要单独发布文件,请使用-T
选项。此外,您正在使用--raw
选项,该选项将禁用HTTP传输编码的处理,即使您正在发送Transfer-Encoding: chunked
标头。移除--raw
和-T
将检测报头以启用分块。
您还要求curl发送一个Content-Type
头,告诉WebService上传的数据是UTF-8编码的XML。您有责任确保XML文件实际上是UTF-8编码的。Curl不会帮你检查的。