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:
Falscher Dateipfad:
Die Dateispeicheranweisung enthält fälschlicherweise Leerzeichen (' ') im Pfad. Ersetzen Sie es durch:
$savefile = fopen('img/uploads/' . $iconfilename, 'w');
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);
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!