如何使用cURL将文件内容作为正文实体发送

时间:2013-04-09 21:29:59

标签: post curl

我正在使用cURL命令行实用程序将HTTP POST发送到Web服务。我想将文件的内容包含在POST的正文实体中。我尝试使用-d </path/to/filename>以及类型信息的其他变体,如--data </path/to/filename> --data-urlencode </path/to/filename>等...文件始终附加。我需要它作为身体实体。

3 个答案:

答案 0 :(得分:274)

我相信您正在寻找@filename语法,例如:

剥离新行

curl --data "@/path/to/filename" http://...

保留新行

curl --data-binary "@/path/to/filename" http://...

=====

curl将从文件中删除所有换行符。如果要完整地发送包含换行符的文件,请使用--data-binary代替--data

答案 1 :(得分:7)

我知道问题已得到解答,但在我的情况下,我试图将文本文件的内容发送到 Slack Webhook api,由于某种原因,上述答案无法解决。 Anywho,这就是我最终的诀窍:

curl -X POST -H --silent --data-urlencode "payload={\"text\": \"$(cat file.txt | sed "s/\"/'/g")\"}" https://hooks.slack.com/services/XXX

答案 2 :(得分:5)

在我的情况下,@导致了某种编码问题,我仍然更喜欢旧的方式:

curl -d "$(cat /path/to/file)" https://example.com