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

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

回答(2)

2 years ago

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

剥离新线

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

保持新的路线

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

=====

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

2 years ago

我知道问题已得到解答,但在我的情况下,我试图将文本文件的内容发送到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