我需要从命令行通过Curl发出POST请求。该请求的数据位于文件中。我知道通过PUT可以使用该--upload-file
选项来完成。
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
我需要从命令行通过Curl发出POST请求。该请求的数据位于文件中。我知道通过PUT可以使用该--upload-file
选项来完成。
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
Answers:
您正在寻找--data-binary
参数:
curl -i -X POST host:port/post-file \
-H "Content-Type: text/xml" \
--data-binary "@path/to/file"
在上面的示例中,-i
打印出所有标题,以便您可以查看正在发生的情况,并-X POST
明确指出这是帖子。可以安全地忽略这两个选项,而无需更改导线的行为。文件的路径前面必须有一个@
符号,因此curl
知道要从文件中读取。
.xml
@
部分非常重要!
-d
将导致curl
删除换行符,但--data-binary
不会。
我需要从命令行通过Curl发出POST请求。此请求的数据位于文件中...
您所需要做的就是使--data
参数以@
:开头
curl -H "Content-Type: text/xml" --data "@path_of_file" host:port/post-file-path
例如,如果您将数据保存在一个名为的文件中,stuff.xml
则可以执行以下操作:
curl -H "Content-Type: text/xml" --data "@stuff.xml" host:port/post-file-path
该stuff.xml
文件名可以与该文件的相对或完整路径替换为: @../xml/stuff.xml
,@/var/tmp/stuff.xml
,...
--data "name@stuff"
。
我必须使用HTTP连接,因为在HTTPS上存在默认文件大小限制。
curl -i -X 'POST' -F 'file=@/home/testeincremental.xlsx' 'http://example.com/upload.aspx?user=example&password=example123&type=XLSX'