275

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

4

4 回答 4

449

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

剥离新线

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

保持新线

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

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

于 2013-04-09T21:41:42.830 回答
28

我知道问题已得到解答,但就我而言,我试图将文本文件的内容发送到Slack Webhook api,但由于某种原因,上述答案不起作用。无论如何,这就是最终对我有用的东西:

curl -X POST -H --silent --data-urlencode "payload={\"text\": \"$(cat file.txt | sed "s/\"/'/g")\"}" https://hooks.slack.com/services/XXX
于 2018-06-08T18:36:33.123 回答
10

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

curl -d "$(cat /path/to/file)" https://example.com
于 2020-07-01T06:26:22.657 回答
-3

curl https://upload.box.com/api/2.0/files/3300/content -H "授权: Bearer $access_token" -F file=@"C:\Crystal Reports\Crystal Reports\mysales.pdf"

于 2021-10-22T16:39:33.920 回答