我正在使用curl命令将大文件(100+ MB)发送到Web服务。我注意到只有当我使用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
会在网络服务收到后保留UTF-8。
答案 0 :(得分:1)
您要求curl使用-d
选项发布XML文件,该选项将发布该文件,就好像它是以application/x-www-webform-urlencoded
格式通过HTTP网络表单提交的一样。要单独发布文件,请改用-T
选项。此外,您正在使用--raw
选项,即使您要发送Transfer-Encoding: chunked
标头,也会禁用HTTP传输编码的处理。删除--raw
,-T
将检测标头以启用分块。
您还要求curl发送Content-Type
标头告诉WebService上传的数据是UTF-8编码的XML。您有责任确保XML文件实际 UTF-8编码。 Curl不会为您检查。