如何在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可以选择将响应写入磁盘,然后从中读取,但只在内存中执行它会更有效。
答案 0 :(得分:2)
尝试消除变量......如下:
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中添加)
如果在任何一方或双方都适用,会发生什么?
答案 1 :(得分:1)
我遇到了一个相关的问题,我想从给定的文件夹中动态卷曲文件。
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"
修正了它。