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

Post 如何使用cURL将文件内容作为实体发送,post,curl,Post,Curl,我正在使用cURL命令行实用程序向web服务发送HTTPPOST。我想包括一个文件的内容作为文章的主体实体。我尝试过使用-d以及其他类型信息的变体,如--data--data-urlencode等。。。文件始终附加在一起。我需要它作为身体实体 我相信您正在查找@filename语法,例如: 剥离新线路 curl --data "@/path/to/filename" http://... curl --data-binary "@/path/to/filename

我正在使用cURL命令行实用程序向web服务发送HTTPPOST。我想包括一个文件的内容作为文章的主体实体。我尝试过使用
-d
以及其他类型信息的变体,如
--data--data-urlencode
等。。。文件始终附加在一起。我需要它作为身体实体

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

剥离新线路

curl --data "@/path/to/filename" http://...
curl --data-binary "@/path/to/filename" http://...
保持新线

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-d“$(cat/path/to/file)”https://example.com

如果你想成为真正的花花公子,你可以这样做:
cat file.txt|curl--data“@-”`(
@-
告诉curl从stdin读取。您也可以使用重定向
来输入任何您想要的内容。如果使用的是bash.curl,则会从文件中删除所有换行符。如果您想发送新行完整的文件,请使用
--data binary
代替
--data
。现在如何添加登录凭据来授权此请求?@anon58192932-这取决于服务器的安全协议。如果您使用的是
name:value
对,如用户名和密码,则添加与服务所需内容相匹配的必要标题:
--header::“
作为单个字符串。此标题不会将点转换为下划线(.->),并保留换行符。谢谢这很酷,但它没有回答这个问题,因为文件在命令行上分解,而不是指定为curl。我还想知道是否所有shell的特殊字符都需要转义——但我对此了解不够;)对于大型内容文件,上面的curl不起作用,
curl:argument list太长
在这种情况下,接受的答案是life saver
curl--data“@/path/to/filename”http://...
这将导致大文件出现“参数列表过长”错误