2011-08-15 45 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