2016-10-27 11 views
5

के साथ कई छवियां अपलोड करें मैं PHP कर्ल के साथ एक से अधिक छवियों को अपलोड करने का प्रयास कर रहा हूं।PHP कर्ल

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

तो मेरी php स्क्रिप्ट में मैंने कोशिश की यह:

{ 
    "errors":{ 
     "error":{ 
     "@key":"unsupported-form-element" 
     } 
    } 
} 
:

$files = array(); 

foreach($photos as $photo) { 
    $cfile = new CURLFile('../' . $photo, 'image/jpeg', 'test_name'); 
    $files[] = $cfile; 
} 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://services.example.com/seller-api/sellers/' . $seller . '/ads/' . $voertuig_id . '/images'); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $files); 
curl_setopt($ch, CURLOPT_PROXY,'api.test.sandbox.example.com:8080'); 
curl_setopt($ch, CURLOPT_USERPWD, 'USER:PASS'); 
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.example.com', 
    'Content-type: multipart/form-data; boundary=vjrLefDejJaWiU0JzZfsadfasd1rMcE2HQ-n7XsSx', 
    'Accept: application/vnd.com.example.api+json' 
)); 

$output = curl_exec($ch); 

curl_close($ch); 

सबसे पहले मैं एपीआई से इस प्रतिक्रिया मिली एपीआई मैं उपयोग कर रहा हूँ मुझे निम्नलिखित उदाहरण देता है

लेकिन अब कोई प्रतिक्रिया नहीं है। मैं एकाधिक फ़ाइलों को अपलोड करने के लिए कर्ल का उपयोग कैसे करूं?

यदि $ फ़ाइलें एक खाली JSON है उदाहरण के लिए, यह बिल्कुल कोई त्रुटि नहीं देता है और छवियों को खाली करता है (खाली)।

यह API मैं उपयोग कर रहा हूँ के प्रलेखन है: https://services.mobile.de/manual/new-seller-api.html#_upload_images

संपादित करें: मैं अनुरोध शरीर का निर्माण और इसे भेजने के लिए करने की कोशिश की है, लेकिन यह कुछ भी नहीं करता है:

$requestBody = ''; 
$requestBody .= '--vjrLeiXjJaWiU0JzZkUPO1rMcE2HQ-n7XsSx\r\n'; 
$requestBody .= 'Content-Disposition: form-data; name="image"; filename="ferrari.JPG"\r\n'; 
$requestBody .= 'Content-Type: image/jpeg\r\n'; 
$requestBody .= 'Content-Transfer-Encoding: binary\r\n'; 

curl_setopt($ch, CURLOPT_POSTFIELDS, $requestBody); 

उत्तर

1

का उपयोग Assoc सरणी, यह कैसे प्रलेखन में उपयोग करने की कोशिश CURLFile

$photos = [ 
    'img1' => 'img1.jpg', 
    'img2' => 'img2.jpg' 
] 

$files = []; 

foreach($photos as $key => $photo) { 
    $cfile = new CURLFile('../' . $photo, 'image/jpeg', $key); 
    $files[$key] = $cfile; 
} 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://services.example.com/seller-api/sellers/' . $seller . '/ads/' . $voertuig_id . '/images'); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $files); 
curl_setopt($ch, CURLOPT_PROXY,'api.test.sandbox.example.com:8080'); 
curl_setopt($ch, CURLOPT_USERPWD, 'USER:PASS'); 
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.example.com', 
    'Content-type: multipart/form-data; boundary=vjrLefDejJaWiU0JzZfsadfasd1rMcE2HQ-n7XsSx', 
    'Accept: application/vnd.com.example.api+json' 
)); 

$output = curl_exec($ch); 

curl_close($ch);