1

サーバーからphp APIを持つイメージホストに画像をアップロードするスクリプトを作成しようとしています。

次の 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

しかし、これによりcurlエラーが発生します(引数が多すぎます)

ここで何をすればいいですか?このbase64データをサーバーに送信する方法として、私は完全に迷っています...

前もって感謝します :)

4

2 に答える 2

3

問題は、base64 の -w フラグに関係している可能性があります。デフォルトでは、base64 は 76 文字ごとに改行を挿入します。

次のような出力が得られます。

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

-w 0 を追加してみてください。これにより、base64 が 1 行で表示されます。

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

URL を適切に引用する必要があります。& 引用符で囲まれていない場合は、コマンドをバックグラウンドに配置します。

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