1

我正在寻找一个脚本来将图像从我的服务器上传到具有 php API 的图像主机。

我应该向 API 发送以下 html 请求:

http://example.com/api?upload=myImg&key=apiKey&format=xml

myImg 和 apiKey 分别是图像和密钥,但你可能已经猜到了:)

我的代码是:

curl -X POST http://example.com/api?upload="$apiImg"&key="$apiKey"&format=xml

当我使用远程 URL 作为图像时,它可以正常工作。

但是,要上传本地图像,它必须是 base64 编码的;我是这样做的:

apiImg=$(base64 "$1") #my script takes the image as argument

但这给了我 curl 错误(参数太多)

我应该在这里做什么?我完全迷失了如何将这个base64数据发送到服务器......

提前致谢 :)

4

2 回答 2

3

您的问题可能与 base64 的 -w 标志有关。默认情况下,base64 每 76 个字符插入一个换行符。

这导致输出如下:

$ base64 ipsum.txt
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIG1lbCBob21lcm8gcHJvbXB0YSBpZCwgdGUgaW1w
ZXJkaWV0IHByb2Rlc3NldCBjb25zZXRldHVyIHZpbSwgZXhlcmNpIHViaXF1ZSBhc3N1ZXZlcml0
IGV0IHZpeC4gQXQgZXVtIHZlcm8gdmlkZXJlciBzY3JpcHRvcmVtLiBBdXRlbSBjb25jZXB0YW0g
ZWFtIG5lLiBTZWQgYXQgc2VudGVudGlhZSBkaXNwdXRhbmRvLCB2aXggdXQgdmVsaXQgbW92ZXQu
IFVzdSBlc3NlIHRvdGEgdGUsIG5lYyBudW1xdWFtIHRpbmNpZHVudCB1dCwgYW5pbWFsIG1lbmFu
ZHJpIGV4cGV0ZW5kYSBhZCB1c3UuIEV1IHF1b3QgZXJhdCBwb3JybyBzZWQsIG5vIGVzdCBhcGVp
cmlhbiBjb25jbHVkYXR1cnF1ZS4=

尝试添加 -w 0,它只会在一行中为您提供 base64。

$ base64 -w0 ipsum.txt
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIG1lbCBob21lcm8gcHJvbXB0YSBpZCwgdGUgaW1wZXJkaWV0IHByb2Rlc3NldCBjb25zZXRldHVyIHZpbSwgZXhlcmNpIHViaXF1ZSBhc3N1ZXZlcml0IGV0IHZpeC4gQXQgZXVtIHZlcm8gdmlkZXJlciBzY3JpcHRvcmVtLiBBdXRlbSBjb25jZXB0YW0gZWFtIG5lLiBTZWQgYXQgc2VudGVudGlhZSBkaXNwdXRhbmRvLCB2aXggdXQgdmVsaXQgbW92ZXQuIFVzdSBlc3NlIHRvdGEgdGUsIG5lYyBudW1xdWFtIHRpbmNpZHVudCB1dCwgYW5pbWFsIG1lbmFuZHJpIGV4cGV0ZW5kYSBhZCB1c3UuIEV1IHF1b3QgZXJhdCBwb3JybyBzZWQsIG5vIGVzdCBhcGVpcmlhbiBjb25jbHVkYXR1cnF1ZS4=
于 2013-09-25T14:31:46.047 回答
0

您应该正确引用您的网址。& 当不被引用时,在后台放置一个命令:

curl -X POST "http://example.com/api?upload=${apiImg}&key=${apiKey}&format=xml"
于 2013-09-25T14:55:50.667 回答