2017-08-01 17 views
0

私は特定のAPIに画像をアップロードするためのスクリプトを書いています。 1つの画像をアップロードすることは問題ではなく、複数の画像をアップロードすることです。 APIのドキュメントでは、次の言葉:PHP - cURLファイルのアップロード

curl -v -s -u username:password \ 
-H "Content-Type: multipart/form-data" \ 
-H "Accept: application/vnd.de.xxx.api+json" \ 
-F "[email protected];type=image/jpeg" \ 
-F "[email protected];type=image/jpeg" \ 
-XPUT 'https://services.xxx.de/seller-api/sellers/123/ads/123/images' 

マイスクリプト:

$ch = curl_init(); 

$images = array(
    'image' => new CURLFile('PATH\1.jpg', 'image/jpeg', 'image') 
); 

curl_setopt($ch, CURLOPT_URL, 'https://services.xxx.de/seller-api/sellers/123/ads/123/images'); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $images); 
curl_setopt($ch, CURLOPT_USERPWD, 'USERNAME:PASSWORD'); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Host: services.xxx.de', 
    'Content-Type: multipart/form-data', 
    'Accept: application/vnd.de.xxx.api+json' 
)); 
curl_setopt($ch, CURLINFO_HEADER_OUT, true); 

問題は、私は新しいものをアップロードしていた場合、APIは、他の画像を削除することです。しかし、私はそのような複数のキーと同じキーを持つ配列を作成することはできません。

$images = array(
    'image' => new CURLFile('PATH\1.jpg', 'image/jpeg', 'image'), 
    'image' => new CURLFile('PATH\2.jpg', 'image/jpeg', 'image') 
); 

そこで問題は、私はドキュメントにcurlコマンドのように同じインデックスを持つ複数のCURLFilesを設定することができる方法ですか?

+0

は、それはあなたを助けるかもしれ、このポストhttps://stackoverflow.com/questions/44474192/upload-multiple-files-with-curlを参照してください。 –

+0

いいえ、残念ながらapiが応答しないからです:{"errors":[{"key": "unsupported-form-element"}]} cURL-Fileのキーは "image"でなくてはならないことを意味します。 ..ありがとう! –

+0

Curlコールをループしてみてください。 –

答えて

-1

検索の時間が経ってからの私の経験: 公式のカール機能では、複数の画像をアップロードすることはできません。

複数の画像をアップロードできるのは、シェルコマンドだけです。 解決方法:アップロードするすべての画像を含めるようにシェルスクリプトを拡張し、次に "shell_exec($ str)"またはexec($ str)を追加します。私のために、これは動作します。

0

は、モバイル売り手API ;-) で働くここソリューションです:

$count=0; 
$files['image'.$count] = curl_file_create(#a#, 'image/jpeg', #b#) 
$count++; 

- あなたの上のファイルへの> ##の完全修飾パス: 1.このような画像ファイルの配列を作成しますサーバ - >#b#オプションでイメージの形式でイメージの名前を指定します$ count

重要:配列名はこのように厳密に名前をつけなければなりません。

    カールのための
  1. オプション: - あなたのHTTP_HEADERから を「ホスト」を削除し、値をCURLOPT_CONNECTTIMEOUTを追加秒で;-)

をちなみに、すべての実際のPHPのバージョンでは、我々はTRUEとFALSE使う代わりに、 curl-optionsの値として0と1を指定します。それは私の作品

...

関連する問題