【问题标题】:How to send file contents as body entity using cURL如何使用 cURL 将文件内容作为正文实体发送
【发布时间】:2013-04-01 12:45:20
【问题描述】:

我正在使用 cURL 命令行实用程序将 HTTP POST 发送到 Web 服务。我想包含一个文件的内容作为 POST 的主体实体。我曾尝试使用-d </path/to/filename> 以及其他带有类型信息的变体,如--data </path/to/filename> --data-urlencode </path/to/filename> 等......该文件始终是附加的。我需要它作为身体实体。

【问题讨论】:

    标签: post curl


    【解决方案1】:

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

    换行

    curl --data "@/path/to/filename" http://...
    

    保留新行

    curl --data-binary "@/path/to/filename" http://...
    

    curl 将从文件中删除所有换行符。如果要发送带有完整换行符的文件,请使用 --data-binary 代替 --data

    【讨论】:

    • 如果你想要真正的花哨,你可以这样做:cat file.txt | curl --data "@-" `(< url.txt )` @- 告诉 curl 从标准输入读取。您也可以使用重定向 (< x.txt ) 来输入您想要的任何内容。如果您使用的是 bash。
    • curl 将从文件中删除所有换行符。如果要发送带有完整换行符的文件,请使用 --data-binary 代替 --data
    • 现在如何添加登录凭据来授权此请求?
    • @anon58192932 - 这取决于服务器的安全协议。如果您使用 name:value 对,例如用户名和密码,则添加与服务期望匹配的必要标头:--header: "<header_name>:<header_value>" 作为单个字符串。
    【解决方案2】:

    我知道问题已得到解答,但在我的情况下,我试图将文本文件的内容发送到 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 指定的。我还想知道是否所有 shell 的特殊字符都需要转义——但我对此知之甚少;)
    • 对于一个巨大的内容文件,上面的 curl 不起作用,curl: argument list too long 在这种情况下接受的答案是救生员curl --data "@/path/to/filename" http://...
    【解决方案3】:

    在我的情况下,@ 引起了某种编码问题,我仍然更喜欢我的旧方式:

    curl -d "$(cat /path/to/file)" https://example.com
    

    【讨论】:

    • 这会导致大文件出现“参数列表太长”的错误
    【解决方案4】:

    curl https://upload.box.com/api/2.0/files/3300/content -H "Authorization: Bearer $access_token" -F file=@"C:\Crystal Reports\Crystal Reports\mysales.pdf"

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2014-01-30
    • 2011-08-26
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 2018-08-06
    相关资源
    最近更新 更多