CURL PHP による画像ファイルのダウンロード
URL から画像ファイルを取得して保存するには、CURL PHP が便利なソリューションを提供します。ただし、特定のコーディングの問題により、試行が妨げられる場合があります。このコード スニペットを分析してみましょう:
function GetImageFromUrl($link) { $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_URL, $link); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch); return $result; } $sourcecode = GetImageFromUrl($iticon); $savefile = fopen(' /img/uploads/' . $iconfilename, 'w'); fwrite($savefile, $sourcecode); fclose($savefile);
問題と解決策:
間違ったファイル パス:
ファイル保存ステートメントのパスに誤ってスペース (' ') が含まれています。これを次のように置き換えます:
$savefile = fopen('img/uploads/' . $iconfilename, 'w');
コードは画像ですが、バイナリデータは考慮されていません。画像を適切に保存するには、次を追加します:
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
このコードは、同じ名前の既存のファイルを上書きします。これを回避するには、
if (file_exists($savefile)) { unlink($savefile); }
追加メモを使用します。 :
function grab_image($url, $saveto) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); $raw = curl_exec($ch); curl_close($ch); if (file_exists($saveto)) { unlink($saveto); } $fp = fopen($saveto, 'x'); fwrite($fp, $raw); fclose($fp); }
PHP 設定ファイル内(php.ini)、allow_url_fopen が有効になっていることを確認してください。
以上がPHP で cURL を使用して画像を効率的にダウンロードして保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。