如何使用 cURL 发布文件内容?

如何使用 cURL 发布文件内容?

我想做HTTP POST一个内容(作为字符串)将位于 的本地文件发布path/to/my-file.txt到位于 的 URL 端点http://example.com/

例如,我可能想执行以下操作:

  1. 将文件内容提取my-file.txt为字符串。
  2. 对字符串进行 URL 编码。
  3. 将编码的字符串存储为名为 的变量foo

然后执行以下操作:

curl -d "data=foo" http://example.com/

(我实际上并不需要变量foo。这只是描述我的问题的一种方便的方式。)

我需要执行哪些命令来执行此操作?我需要编写 shell 脚本吗?如果需要,它会是什么样子?

答案1

根据的最后一-dman 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/

手册参考在这里

另请参阅此 SE 答案此款也适用于多部分

相关内容