2015-12-25 11 views
8

पर CURL कमांड अपलोड करें मैं PHP कर्ल के लिए बहुत नया हूं और छवि अपलोड करने के लिए एपीआई को कॉल करने का प्रयास कर रहा था (एक समय में कई फाइलें)। एपीआई दस्तावेज ने नीचे दिए गए उदाहरण को कर्ल में दिया है। मैंने परीक्षण किया है और यह काम कर रहा है।छवि अपलोड करें PHP कर्ल

curl -H "Authorization: Bearer 123456789" -i -X POST -F "whitespace=1" \ 
-F "imageData[][email protected]/path/to/images/milk.jpg" \ 
-F "imageData[][email protected]/path/to/images/peas.jpg" \ 
https://mytestapi.com/1.0/uploadimages 

अब मुझे इसे PHP कर्ल में परिवर्तित करने की आवश्यकता है। किसी कारण से, मुझे हमेशा "imageData" पैरा त्रुटि मिल रही है। किसी की मदद कर सकते हैं तो कृपया

$token = '123456789'; 
$imgUrl = 'https://mytestapi.com/1.0/uploadimages'; 


$data_to_post = array(); 
$data_to_post['whitespace'] = '1'; 
$data_to_post['imageData[]'] = '@/path/to/images/milk.jpg'; 
$data_to_post['imageData[]'] = '@/path/to/images/peas.jpg'; 


$curl = curl_init($imgUrl); 
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer '.$token]); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_VERBOSE, 1); 
curl_setopt($curl,CURLOPT_POST, 1); 
curl_setopt($curl,CURLOPT_POSTFIELDS, $data_to_post); 
$data = json_decode(curl_exec($curl)); 
$responseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
curl_close($curl); 

var_dump($data); 
+0

का उपयोग कर जिसे आप इनाम –

+0

इनाम के लिए धन्यवाद दे देंगे एक फ़ाइल अपलोड करने का उपयोग करने के लिए php कर्ल फ़ाइल यह बजाय साथ जोड़कर का काम करने के लिए बनाने के लिए किया था '@' । यदि आप –

उत्तर

4

कोशिश के बजाय '@/path/to/images/milk.jpg';

यहाँ छवि का पूरा पथ देने के लिए अपडेट किया गया है कोड:

$token = '123456789'; 
$imgUrl = 'https://mytestapi.com/1.0/uploadimages'; 


$data_to_post = array(); 
$data_to_post['whitespace'] = '1'; 
$data_to_post['imageData'][] = "@".$imgUrl.'/path/to/images/milk.jpg'; 
$data_to_post['imageData'][] = "@".$imgUrl.'/path/to/images/peas.jpg'; 


$curl = curl_init($imgUrl); 
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer '.$token]); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_VERBOSE, 1); 
curl_setopt($curl,CURLOPT_POST, 1); 
curl_setopt($curl,CURLOPT_POSTFIELDS, $data_to_post); 
$data = json_decode(curl_exec($curl)); 
$responseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
curl_close($curl); 

var_dump($data); 

कृपया मुझे पता है कि अगर यह काम नहीं करते हैं।

+0

पूर्ण पथ के साथ काम नहीं करते हैं तो आप ऊपर की ओर बढ़ सकते हैं। वैसे भी $ imgUrl एपीआई यूआरएल है, इसलिए आपके कोड को उस छवि फ़ाइल नाम में जोड़ना समझ में नहीं आता है? वैसे भी मैं इसे अभी php curl फ़ाइल बनाने का उपयोग कर ठीक करने में सक्षम था – user1263019

0

कैसे पीएचपी cURL

<?php 

// Helper function courtesy of https://github.com/guzzle/guzzle/blob/3a0787217e6c0246b457e637ddd33332efea1d2a/src/Guzzle/Http/Message/PostFile.php#L90 
function getCurlValue($filename, $contentType, $postname) 
{ 
    // PHP 5.5 introduced a CurlFile object that deprecates the old @filename syntax 
    // See: https://wiki.php.net/rfc/curl-file-upload 
    if (function_exists('curl_file_create')) { 
     return curl_file_create($filename, $contentType, $postname); 
    } 

    // Use the old style if using an older version of PHP 
    $value = "@{$this->filename};filename=" . $postname; 
    if ($contentType) { 
     $value .= ';type=' . $contentType; 
    } 

    return $value; 
} 

$filename = '/path/to/file.jpg'; 
$cfile = getCurlValue($filename,'image/jpeg','cattle-01.jpg'); 

//NOTE: The top level key in the array is important, as some apis will insist that it is 'file'. 
$data = array('file' => $cfile); 

$ch = curl_init(); 
$options = array(CURLOPT_URL => 'http://your/server/api/upload', 
      CURLOPT_RETURNTRANSFER => true, 
      CURLINFO_HEADER_OUT => true, //Request header 
      CURLOPT_HEADER => true, //Return header 
      CURLOPT_SSL_VERIFYPEER => false, //Don't veryify server certificate 
      CURLOPT_POST => true, 
      CURLOPT_POSTFIELDS => $data 
      ); 

curl_setopt_array($ch, $options); 
$result = curl_exec($ch); 
$header_info = curl_getinfo($ch,CURLINFO_HEADER_OUT); 
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); 
$header = substr($result, 0, $header_size); 
$body = substr($result, $header_size); 
curl_close($ch); 

?> 

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>File Upload results</title> 
</head> 
<body> 
    <p>Raw Result: <?=$result?> 
    <p>Header Sent: <?=$header_info?></p> 
    <p>Header Received: <?=$header?></p> 
    <p>Body: <?=$body?></p> 
</body> 
</html> 
संबंधित मुद्दे