【问题标题】:How can I send a file's contents as a POST parameter using cURL?如何使用 cURL 将文件内容作为 POST 参数发送?
【发布时间】:2014-01-30 10:34:08
【问题描述】:

我正在尝试使用 cURL 来发布文件的内容,就好像我已将该内容粘贴到 html 文本区域中一样。也就是说我不想上传文件,我只想用一个名为 foo 的 post 参数填充名为 bar.txt 的文件中的文本。 bar.txt 的内容可能包括换行符、引号等。

这可能吗?

谢谢。

编辑:我最终发现了如何做到这一点:

curl --data-urlencode "foo@bar.txt" http://example.com/index.php

这将获取文件 bar.txt 的内容,对其进行 url 编码,将生成的字符串放在 http://example.com/index.php 的 POST 请求中名为 foo 的参数中。

我无法谈论其他人建议的解决方案是否有效,但上述方法似乎是最好的方法。

【问题讨论】:

  • 我不知道如何将其标记为已解决,但确实如此。
  • 您可以回答自己的问题,然后选择它。我发现你的答案是唯一有效的

标签: linux bash http post curl


【解决方案1】:

您应该对文件内容进行编码/解码(例如在 Linux 下使用 base64 命令)。

文件 foo.txt:

8<----------------------------
Hello World
I am a Secure Web Gateway
8<----------------------------
base64 foo.txt | base64 -d

【讨论】:

    【解决方案2】:

    你可以这样做:

    $ curl --data "foo:$(cat foo.txt)" http://localhost/yourfile.php
    

    请注意,正如 cacheguard 所说,您可能希望对文件进行编码。要将其编码为 base64,只需像这样修改前面的命令:

    $ curl --data "foo:$(cat foo.txt | base64)" http://localhost/yourfile.php
    

    【讨论】:

      猜你喜欢
      • 2013-04-01
      • 2015-08-23
      • 1970-01-01
      • 2022-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多