Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Bilder mit cURL in PHP effizient herunterladen und speichern?

Wie kann ich Bilder mit cURL in PHP effizient herunterladen und speichern?

Linda Hamilton
Linda HamiltonOriginal
2024-12-01 02:23:13866Durchsuche

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

Bilddateien über CURL PHP herunterladen

Um Bilddateien von URLs abzurufen und zu speichern, bietet CURL PHP eine praktische Lösung. Allerdings können bestimmte Codierungsprobleme Ihre Versuche behindern. Sehen wir uns dieses Code-Snippet genauer an:

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);

Probleme und Lösung:

  1. Falscher Dateipfad:

    • Die Dateispeicheranweisung enthält fälschlicherweise Leerzeichen (' ') im Pfad. Ersetzen Sie es durch:

      $savefile = fopen('img/uploads/' . $iconfilename, 'w');
  2. Fehlende Funktionalität:

    • Der Code ruft die ab Bild, berücksichtigt jedoch keine Binärdaten. Um eine ordnungsgemäße Bildspeicherung sicherzustellen, fügen Sie Folgendes hinzu:

      curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
  3. Vorhandene Dateien überschreiben:

    • Der Code überschreibt alle vorhandenen Dateien mit demselben Namen. Um dies zu vermeiden, verwenden Sie:

      if (file_exists($savefile)) {
        unlink($savefile);
      }

Optimierter Code:

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);
}

Zusätzlicher Hinweis :

Stellen Sie in Ihrer PHP-Konfigurationsdatei (php.ini) sicher, dass „allow_url_fopen ist aktiviert.

Das obige ist der detaillierte Inhalt vonWie kann ich Bilder mit cURL in PHP effizient herunterladen und speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn