Post 如何使用cURL将文件内容作为实体发送
我正在使用cURL命令行实用程序向web服务发送HTTPPOST。我想包括一个文件的内容作为文章的主体实体。我尝试过使用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
-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 savercurl--data“@/path/to/filename”http://...
这将导致大文件出现“参数列表过长”错误