我有一个脚本,使用cURL将数据发布到服务器。当我使用HTML表单POST相同的数据时,POST看起来像这样,一切都很好:
description=Something&name=aName&xml=wholeBiunchOfData&xslt=moreData
XML和XSLT很大并且发生了变化;我宁愿将它们保存在外部文件中。但是,以下内容无法正常工作;
curl --cookie cjar --cookie-jar cjar --location --output NUL ^
--data "name=aName&description=Something" ^
--data "xml=@localFile.xml" ^
--data "xslt=@localFile.xslt" ^
http://someUrl.html
我尝试了@和本地文件的各种组合但没有成功。如何发布文件内容?
答案 0 :(得分:2)
查看手册页,看起来--data @file语法不允许变量名,它必须在文件中。 http://paulstimesink.com/2005/06/29/http-post-with-curl/。您也可以尝试使用反引号
curl --cookie cjar --cookie-jar cjar --location --output NUL ^
--data "name=aName&description=Something" ^
--data "xml=`cat localFile.xml`" ^
--data "xslt=`cat someFile.xml`" ^
http://someUrl.html
答案 1 :(得分:1)
我建议您尝试以下方法:
curl --cookie cjar --cookie-jar cjar --location --output NUL ^
--data "name=aName&description=Something" ^
--data-urlencode "xml@localFile.xml" ^
--data-urlencode "xslt@localFile.xslt" ^
http://someUrl.html
XML(包括样式表)在成为URL的一部分之前需要进行URL编码。
您还可以使用--trace-ascii -
作为附加参数将输入和输出转储到标准输出以进行进一步调试,您可以在主man page上找到更多信息。
希望这有帮助!