2012-09-06 15 views
5
का उपयोग कर छवि भेजा जा रहा है

हैलो मैं पीएचपी cURL का उपयोग कर छवि भेजने की जरूरत है, इस तरह यह करने की कोशिश की:php cURL

$this->ch = curl_init(); 
curl_setopt($this->ch, CURLOPT_URL, $URL); 
$postValues = array(
      'utf8' => $utf8, 
      'authenticity_token' => $auth_token, 
      'media_object[title]' => 'something', 
      'media_object[source]' => '', 
      'media_object[object_type]' => 0, 
      'media_object[image]'=>'@/home/me/images/something.jpg', 
      'captcha' => $captcha, 
     ); 

$n = 0; 
     $postStr = ''; 
     foreach ($postValues as $name => $value) { 
      if ($n == 0) 
       $postStr .= $name . '=' . $value; 
      else 
       $postStr .= '&' . $name . '=' . $value; 
      $n++; 
     } 
     curl_setopt($this->ch, CURLOPT_URL, $url); 
     curl_setopt($this->ch, CURLOPT_POSTFIELDS, $postStr); 
     curl_setopt($this->ch, CURLOPT_POST,1); 
curl_setopt($this->ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1"); 
     curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($this->ch, CURLOPT_COOKIEFILE, TMP.'cookies.txt'); 
     curl_setopt($this->ch, CURLOPT_COOKIEJAR, TMP.'cookies.txt'); 
curl_exec($this->ch); 

लेकिन यह काम नहीं करता। बेशक मैंने इस कोड के साथ सामान्य पोस्ट अनुरोध करने की कोशिश की और यह ठीक काम करता है, बस जब मैं छवि पोस्ट करने का प्रयास करता हूं तो यह काम नहीं करता है।

मैं LIVE HTTP हेडर के माध्यम से हेडर पर कब्जा कर लिया है और यह इस तरह दिखता है: इन सही हेडर कि मैं ऐड-ऑन के साथ मोज़िला का उपयोग कर कब्जा कर लिया गया है, इसलिए cURL shoud एक ही बात करते हैं:

Content-Type: multipart/form-data; boundary=---------------------------41184676334 
Content-Length: 218115 
-----------------------------41184676334 
Content-Disposition: form-data; name="utf8" 

â 
-----------------------------41184676334 
Content-Disposition: form-data; name="authenticity_token" 

0Je50mUpOMdghYgHPH5Xjd8UnbuvzzQLyyACfvGmVgY= 
-----------------------------41184676334 
Content-Disposition: form-data; name="media_object[title]" 

Something 
-----------------------------41184676334 
Content-Disposition: form-data; name="media_object[source]" 


-----------------------------41184676334 
Content-Disposition: form-data; name="media_object[object_type]" 

0 
-----------------------------41184676334 
Content-Disposition: form-data; name="media_object[image]"; filename="something.jpg" 
Content-Type: image/jpeg 

ÿØÿà 

है क्या कुछ गलत है या क्या? वेबपृष्ठ जो छवि रिटर्न संदेश भेजने की कोशिश कर रहा हूं "फ़ाइल का नाम खाली नहीं हो सकता है!" ने भी जोड़ने की कोशिश की; filename = "something.jpg" और; टाइप = "छवि/जेपीईजी" के बाद '@/home/me/images/something.jpg'

+0

शीर्षकों और शरीर के बीच एक अतिरिक्त नई लाइन नहीं होनी चाहिए? – Musa

उत्तर

2

मुझे कुछ हफ्ते पहले इसी तरह की समस्या है, कोशिश करें फ़ाइल या अनुमतियों के स्थान को बदलने के लिए। पता लगाने के लिए कर्ल भेजने इस कोशिश हेडर: हेडर बारे में जानकारी प्राप्त अनुरोध के बाद

curl_setopt(CURLINFO_HEADER_OUT, true); 

:

curl_getinfo($this->ch, CURLINFO_HEADER_OUT) 
0

मेरी समस्या हल इस हिस्से को हटाने के द्वारा:

$n = 0; 
     $postStr = ''; 
     foreach ($postValues as $name => $value) { 
      if ($n == 0) 
       $postStr .= $name . '=' . $value; 
      else 
       $postStr .= '&' . $name . '=' . $value; 
      $n++; 
     } 

और यह बदल दिया है: curl_setopt($this->ch, CURLOPT_POSTFIELDS, $postStr);curl_setopt($this->ch, CURLOPT_POSTFIELDS, $postValues);

पोस्टफील्ड की आवश्यकता "सामग्री-प्रकार: मल्टीपार्ट/फॉर्म-डेटा" प्राप्त करने के लिए एक सरणी बनें।