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