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
Freigeben: 2024-12-01 02:23:13
Original
855 Leute haben es durchsucht

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);
Nach dem Login kopieren

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');
      Nach dem Login kopieren
  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);
      Nach dem Login kopieren
  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);
      }
      Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage