使用cURL上传文件内容

时间:2010-07-17 01:14:11

标签: post curl

我有一个脚本,使用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

我尝试了@和本地文件的各种组合但没有成功。如何发布文件内容?

2 个答案:

答案 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上找到更多信息。

希望这有帮助!