2011-08-15 33 views
1

私はcURLを使用してビルドしたAPIにファイルを投稿する際に問題が発生しています。PHPを使用してcURLを使用してファイルを投稿する

私は小さな画像を投稿することができます(4キロバイトと言う)が、私がしようとすると、大きな画像を添付したとき、私は次のエラーを取得する:

カール・エラー:

私が作るために使用していたコードを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ビットシステム、2GBのファイル、オープンファイルの制限などを制限する...制限がたくさんあります。詳細がなければ、それ以上には答えられません。 '$ vars'には何がありますか? –

+0

$ varsは私が投稿している変数なので、次のようになります: $ 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を再起動しようとしましたが、まだ大きなファイルをアップロードできません。 LimitRequestBody 0

+0

コマンドラインからcurlを手動で実行して、正しく機能することを確認しましたか?私はそれをPHPに入れる前にカールコールが機能することを確認するためにこれを使用しました。 PHPの問題のみがここにあるかどうかを知る方法:http://curl.haxx.se/docs/manpage.html – ghostJago

関連する問題