【问题标题】:Bash curl POST a binary variableBash curl POST一个二进制变量
【发布时间】:2013-01-06 20:42:37
【问题描述】:

如何在 curl bash 中发布二进制变量?

#!/usr/bin/env bash
IMAGE=$(curl "http://www.google.com/images/srpr/logo3w.png")
curl --data-binary "$IMAGE" --request "POST" "http://www.somesite.com"

Curl 在上传时似乎确实损坏了图像。

Curl 可以选择将响应写入磁盘然后从中读取,但仅在内存中执行会更有效。

【问题讨论】:

  • 你能把第一个 curl 命令的输出通过管道传送到第二个吗?这至少消除了变量 ...
  • @ernestopheles 你能告诉我怎么做吗?

标签: bash variables curl encoding binary


【解决方案1】:

尝试消除变量...如下:

curl "http://www.google.com/images/srpr/logo3w.png" | curl --data-binary - --request "POST" "http://www.somesite.com"

来自 curl 手册页:

如果您以字母 @ 开头数据,则其余部分应该是从中读取数据的文件名,或者 - 如果您希望 curl 从 stdin 读取数据。

编辑:也来自手册页:

--raw 使用时,它会禁用所有内部 HTTP 内容解码或传输编码,而是让它们原封不动地传递。 (在 7.16.2 中添加)

如果应用于任一方或双方会发生什么?

【讨论】:

  • 卷曲 "google.com/images/srpr/logo3w.png" | curl --data-binary @- --request "POST" "somesite.com" 仍然会破坏二进制数据。
  • @BeniBela 不,它是多部分帖子的一部分。其他一切正常,但二进制数据被破坏了。
  • raw 仍然不起作用。感谢大家的帮助,但我会用 pycurl 自己编写。
【解决方案2】:

我遇到了一个相关问题,我想动态地从给定文件夹中卷曲文件。

curl --data-binary directory/$file --request "POST" "http://www.somesite.com" 不起作用 - 上传字符串“directory/myFile.jar”而不是实际文件。

添加@符号 curl --data-binary @directory/$file --request "POST" "http://www.somesite.com" 已修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 2012-06-25
    • 2018-11-22
    • 2013-06-06
    相关资源
    最近更新 更多