你如何在 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 "http://www.google.com/images/srpr/logo3w.png" | curl --data-binary - --request "POST" "http://www.somesite.com"
从 curl 手册页:
如果您以字母 @ 开始数据,则其余部分应该是从中读取数据的文件名,或者 - 如果您希望 curl 从标准输入中读取数据。
编辑:也从手册页:
--raw 使用时,它会禁用所有内部 HTTP 内容解码或传输编码,而是让它们原封不动地传递。(在 7.16.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"
修复它。