在不使用@file 的情况下将二进制数据传递给 curl

Kir*_*oll 36 binary curl

是否可以在不传入文件名的情况下使用 curl 并发布二进制数据?例如,您可以通过 --data-binary 使用二进制发布表单:

curl -X POST --data-binary @myfile.bin http://foo.com
Run Code Online (Sandbox Code Playgroud)

但是,这需要文件存在。我希望能够将 HTTP 调用(例如休息服务)记录为 curl 命令的文本以重现请求。(例如,这极大地有助于调试这些服务)

但是,记录引用文件的 curl 命令没有用,所以我希望我可以实际记录原始二进制数据,大概是 base64 编码的,但仍然允许您复制和粘贴记录的 curl 命令并执行它。

那么,是否可以在不引用文件的情况下使用 curl 并发布二进制数据?如果是这样,那将如何运作?一个例子会是什么样子?

slm*_*slm 51

您可以通过 STDIN 将数据传递到 curl 中,如下所示:

echo -e '...data...\n' | curl -X POST --data-binary @- http://foo.com
Run Code Online (Sandbox Code Playgroud)

@-通知curl从STDIN拉英寸

将二进制数据通过管道传输到 curl(例如):

echo -e '\x03\xF1' | curl -X POST --data-binary @- http://foo.com
Run Code Online (Sandbox Code Playgroud)

  • 我试过这个:`cat 1.jpg | curl -X POST --data-binary @- http://foo.com`。像魅力一样工作。为了验证,我也试过:`cat 1.jpg | md5sum` 和 `md5sum 1.jpg`。它们都返回了相同的值。 (2认同)