我正在制作一个脚本,将图像从我的服务器上传到一个带有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数据发送到服务器......
提前致谢:)
答案 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"