我需要从命令行通过Curl发出POST请求。该请求的数据位于文件中。我知道通过PUT可以使用--upload-file
选项来完成。
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
您正在寻找--data-binary
参数:
curl -i -X POST host:port/post-file \
-H "Content-Type: text/xml" \
--data-binary "@path/to/file"
在上面的示例中,-i
打印出所有标题,以便您可以查看正在发生的情况,而-X POST
则明确表明这是一篇帖子。可以安全地忽略这两个选项,而无需更改导线的行为。文件的路径前面必须带有@
符号,因此curl
知道要从文件读取。
我需要从命令行通过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
,...
如果使用表单数据上载文件,必须在其中指定参数名称,则可以使用:
curl -X POST -i -F parametername=@filename host:port/xxx
大多数答案在这里是完美的,但是当我因特殊问题而来到这里时,我必须使用POST方法上传二进制文件(XLSX电子表格),我看到了一件事情[[missing,即通常它不仅仅是文件加载后,您可能会遇到更多form data elements,喜欢对文件的注释或对文件的标记等情况。因此,我想在这里添加它,因为这是我的用例,以便它可以对其他人有所帮助。
curl -POST -F comment=mycomment -F file_type=XLSX -F file_data=@/your/path/to/file.XLSX http://yourhost.example.com/api/example_url
curl -i -X 'POST' -F 'file=@/home/testeincremental.xlsx' 'http://example.com/upload.aspx?user=example&password=example123&type=XLSX'