我正在使用cURL命令行工具向Web服务发送HTTP POST请求。我想将文件内容作为POST的主体实体包含在内。我尝试使用-d </path/to/filename>
以及其他包含类型信息的变量,例如--data </path/to/filename> --data-urlencode </path/to/filename>
等等,但文件总是被附加在外面。我需要它作为主体实体。
@filename
语法,例如:
strip new lines
curl --data "@/path/to/filename" http://...
保留换行符
curl --data-binary "@/path/to/filename" http://...
curl将从文件中删除所有换行符。如果您想带有换行符发送文件,请使用--data-binary
代替--data。
我知道这个问题已经得到了解答,但在我的情况下,我尝试将文本文件的内容发送到Slack Webhook API, 但由于某种原因,上面的答案并没有起作用。最终以下方法帮助了我:
curl -X POST -H --silent --data-urlencode "payload={\"text\": \"$(cat file.txt | sed "s/\"/'/g")\"}" https://hooks.slack.com/services/XXX
curl --data "@/path/to/filename" http://..."
- Another coder在我的情况下,@
导致了某种编码问题,我仍然更喜欢我的旧方法:
curl -d "$(cat /path/to/file)" https://example.com
curl https://upload.box.com/api/2.0/files/3300/content -H "Authorization: Bearer $access_token" -F file=@"C:\Crystal Reports\Crystal Reports\mysales.pdf"
使用curl命令上传文件到Box的API 2.0。需要提供访问令牌(access_token)作为请求标头中的身份验证信息,并且需要指定待上传文件的路径及名称。
cat file.txt | curl --data "@-" \
(< url.txt )`。其中的
@-告诉curl从标准输入读取数据。你也可以直接使用重定向符号
(< x.txt )`来替代。如果你在使用bash。 - Breedly--data-binary
选项代替--data
选项。因为--data
选项会将文件中所有的换行符都去掉。请注意,翻译过程中不得改变原文意思。 - Chrisname:value
对,例如用户名和密码,则需要添加与服务期望的匹配的必要标头:--header:"<header_name>:<header_value>"
作为一个字符串。 - Roy Hinkley