ホームページ > バックエンド開発 > PHPチュートリアル > PHP で cURL を使用して画像を効率的にダウンロードして保存するにはどうすればよいですか?

PHP で cURL を使用して画像を効率的にダウンロードして保存するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-01 02:23:13
オリジナル
856 人が閲覧しました

How Can I Efficiently Download and Save Images Using cURL in PHP?

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);
ログイン後にコピー

問題と解決策:

  1. 間違ったファイル パス:

    • ファイル保存ステートメントのパスに誤ってスペース (' ') が含まれています。これを次のように置き換えます:

      $savefile = fopen('img/uploads/' . $iconfilename, 'w');
      ログイン後にコピー
  2. 欠落している機能:
  3. コードは画像ですが、バイナリデータは考慮されていません。画像を適切に保存するには、次を追加します:
    • curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
      ログイン後にコピー
  4. 既存のファイルの上書き:
  5. このコードは、同じ名前の既存のファイルを上書きします。これを回避するには、
    • if (file_exists($savefile)) {
        unlink($savefile);
      }
      ログイン後にコピー
  6. 最適化コード:

追加メモを使用します。 :
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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート