通过Curl通过文件指定的数据发送POST请求

我需要从命令行通过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明确表示这是一个文章。 这两个可以安全地省略,而不会改变电线上的行为。 文件的path需要以@符号开头,所以curl知道从文件读取。

如果您使用表单数据上传文件,其中必须指定参数名称,则可以使用:

curl -X POST -i -F parametername=@filename host:port/xxx

我需要从命令行通过Curl发出一个POST请求。 这个请求的数据位于一个文件中…

其他答案似乎不必要复杂。 所有你需要做的就是用@来引导--data参数:

 curl -H "Content-Type: text/xml" --data "@path_of_file" host:port/post-file 

例如,如果你有一个名为stuff.xml的文件中的数据,那么你会做这样的事情:

 curl -H "Content-Type: text/xml" --data "@stuff.xml" host:port/post-file 

stuff.xml文件名可以replace为要使用的文件的相对path或完整path: @./xml/stuff.xml@/var/tmp/stuff.xml ,…