2013-09-25 90 views
0

我正在寻找一个脚本来将图像从我的服务器上传到具有php API的imagehost。curl并将base64数据发布到php上传脚本

我应该派下面的HTML请求API:

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

您是否以这种方式使用卷曲?你可以粘贴你的PHP代码吗? – Mauro

+0

php代码位于图像主机端,它接受我发布的POST请求,但图像必须是URL或图像base64编码 – yaka

+0

从哪里发送此数据到图像主机?你如何发送这些数据?用PHP或JavaScript? – Mauro

回答

2

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

导致输出这样的:

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

尝试增加-w 0,这只是给你一个长线的base64。

$ base64 -w0 ipsum.txt 
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIG1lbCBob21lcm8gcHJvbXB0YSBpZCwgdGUgaW1wZXJkaWV0IHByb2Rlc3NldCBjb25zZXRldHVyIHZpbSwgZXhlcmNpIHViaXF1ZSBhc3N1ZXZlcml0IGV0IHZpeC4gQXQgZXVtIHZlcm8gdmlkZXJlciBzY3JpcHRvcmVtLiBBdXRlbSBjb25jZXB0YW0gZWFtIG5lLiBTZWQgYXQgc2VudGVudGlhZSBkaXNwdXRhbmRvLCB2aXggdXQgdmVsaXQgbW92ZXQuIFVzdSBlc3NlIHRvdGEgdGUsIG5lYyBudW1xdWFtIHRpbmNpZHVudCB1dCwgYW5pbWFsIG1lbmFuZHJpIGV4cGV0ZW5kYSBhZCB1c3UuIEV1IHF1b3QgZXJhdCBwb3JybyBzZWQsIG5vIGVzdCBhcGVpcmlhbiBjb25jbHVkYXR1cnF1ZS4= 
+0

感谢您的回答,但我之前也尝试过,它给出了完全相同的错误:/ usr/bin/curl:Liste d'arguments trop longue(参数列表太长) – yaka

0

你应该引用你的网址。 &当未引用时在背景上放置了一条命令:

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