2011-08-15 107 views
1

我在使用cURL構建的API中發佈文件時遇到問題。使用cURL使用PHP發佈文件

我可以張貼的小圖像(比如4KB),但是當我嘗試並附加一個大的圖像,我得到了以下錯誤:

捲曲錯誤:無法創建formpost數據

我使用,使代碼cURL調用如下:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 100); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 

try { 
    switch($type) { 
     case "GET": 
      break; 
     case "POST": 
      curl_setopt($ch, CURLOPT_POST, true); 
      curl_setopt($ch, CURLOPT_POSTFIELDS, $vars); 
      break; 
     case "PUT": 
      $fh = fopen('php://memory', 'rw'); 
      $data = http_build_query($vars, '', '&'); 
      fwrite($fh, $data); 
      rewind($fh); 
      curl_setopt($ch, CURLOPT_INFILE, $fh); 
      curl_setopt($ch, CURLOPT_INFILESIZE, strlen($data)); 
      curl_setopt($ch, CURLOPT_PUT, true); 
      break; 
     case "DELETE": 
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); 
      break; 
     default: 
      throw new InvalidArgumentException('Current verb is an invalid REST verb.'); 
    } 
} catch (InvalidArgumentException $e) { 
    curl_close($ch); 
    throw $e; 
} catch (Exception $e) { 
    curl_close($ch); 
    throw $e; 
} 
$result = curl_exec($ch); 
$info = curl_getinfo($ch); 
if(curl_errno($ch)) { 
    echo 'Curl error: ' . curl_error($ch); 
} 

curl_close($ch); 

是否通過cURL上傳圖像的文件大小上限。

您的幫助,將不勝感激。

+0

PHP的內存限制,32位系統限制你2gig文件,打開文件限制等...有很多限制。沒有更多的細節,不能比任何更好的答案。 '$ vars'中有什麼? –

+0

$ var是我發佈的變量,因此會看起來像這樣: $ vars = array(「name」=> $ name,「image」=>「@/tmp/image.jpg」); –

+0

雖然我不想上傳2GB文件。這是一個148KB的文件! –

回答

0

您可能會遇到在服務器上設置的限制。 Apache有LimitRequestBody指令允許服務器管理員限制上傳大小。你可以在這裏閱讀更多關於它的信息:http://httpd.apache.org/docs/2.1/mod/core.html#limitrequestbody

服務器管理員也可以對Windows IIS服務應用限制,儘管只能從6.0開始可靠。

+0

非常感謝指針,但我嘗試將以下內容添加到我的httpd.conf文件並重新啓動apache,但仍無法上傳大文件。 <目錄「/ Applications/MAMP/htdocs/images」> LimitRequestBody 0 –

+0

您是否嘗試過從命令行手動運行curl以確保其正常工作?我曾經這麼做過,以確保在我將它放入PHP之前,curl調用會起作用。這樣,你知道它是一個PHP問題只有文檔在這裏:http://curl.haxx.se/docs/manpage.html – ghostJago