卷曲并将base64数据发布到php上传脚本

时间:2013-09-25 11:37:13

标签: bash curl

我正在制作一个脚本,将图像从我的服务器上传到一个带有php API的imagehost。

我应该向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

但是这给了我卷曲错误(参数太多)

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

提前致谢:)

2 个答案:

答案 0 :(得分:2)

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

这导致输出如下:

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

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

$ base64 -w0 ipsum.txt
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIG1lbCBob21lcm8gcHJvbXB0YSBpZCwgdGUgaW1wZXJkaWV0IHByb2Rlc3NldCBjb25zZXRldHVyIHZpbSwgZXhlcmNpIHViaXF1ZSBhc3N1ZXZlcml0IGV0IHZpeC4gQXQgZXVtIHZlcm8gdmlkZXJlciBzY3JpcHRvcmVtLiBBdXRlbSBjb25jZXB0YW0gZWFtIG5lLiBTZWQgYXQgc2VudGVudGlhZSBkaXNwdXRhbmRvLCB2aXggdXQgdmVsaXQgbW92ZXQuIFVzdSBlc3NlIHRvdGEgdGUsIG5lYyBudW1xdWFtIHRpbmNpZHVudCB1dCwgYW5pbWFsIG1lbmFuZHJpIGV4cGV0ZW5kYSBhZCB1c3UuIEV1IHF1b3QgZXJhdCBwb3JybyBzZWQsIG5vIGVzdCBhcGVpcmlhbiBjb25jbHVkYXR1cnF1ZS4=

答案 1 :(得分:0)

你应该正确引用你的网址。 &安培;当没有引用时在后台放置一个命令:

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