我想做HTTP POST
一个内容(作为字符串)将位于 的本地文件发布path/to/my-file.txt
到位于 的 URL 端点http://example.com/
。
例如,我可能想执行以下操作:
- 将文件内容提取
my-file.txt
为字符串。 - 对字符串进行 URL 编码。
- 将编码的字符串存储为名为 的变量
foo
。
然后执行以下操作:
curl -d "data=foo" http://example.com/
(我实际上并不需要变量foo
。这只是描述我的问题的一种方便的方式。)
我需要执行哪些命令来执行此操作?我需要编写 shell 脚本吗?如果需要,它会是什么样子?
答案1
根据的最后一-d
节man curl
:
如果数据以字母 开头@
,则其余部分应为要从中读取数据的文件名,或者 - 如果您希望 curl 从 stdin 读取数据。还可以指定多个文件。foobar
因此,从名为 的文件发布数据将使用 来完成--data @foobar
。当--data
被告知从这样的文件中读取时,回车符和换行符将被删除。
也就是说您不需要做任何花哨的事情,只需在文件名前面加上@
.
答案2
正如本文所提到的相关问题如果您希望文件上传时不做任何更改(curl 默认删除回车符/换行符),那么您可能需要使用以下--data-binary
选项:
curl -X POST --data-binary @path/to/my-file.txt http://example.com/
答案3
为了明确起见,接受的答案建议:
curl -d "data=@path/to/my-file.txt" http://example.com/