Bild von externer URL speichern
Inhalt
Hin und wieder hat man das Bedürfnis oder aber die Aufgabe, Bilder von bekannten URLs auf dem eigenen Rechner / Server zu speichern. Mit PHP gelingt dies relativ einfach und bequem. Folgende Utility-Klasse zeigt, wie es gehen könnte.
class Utility {
static public function getRemoteImage($url, $fileName) {
// Hole das Bild von der URL
$imageData = file_get_contents($url);
// Erzeuge eine neue Datei auf dem Webserver
// Das Zielverzeichnis muss für den Webserver-Benutzer beschreibbar sein
$fileHandle = fopen($fileName, "w");
fwrite($fileHandle, $imageData);
fclose($fileHandle);
}
}
Um das Bild jetzt zu speichern, genügt nach Einbinden der Klasse folgender Aufruf:
require_once 'class.Utility.php';
Utility::getRemoteImage("http://www.example.com/picture.jpg","picture.jpg");
Was man letzten Endes speichert, bleibt sich relativ egal. Es können Binärdaten und Textdaten gleichermaßen gespeichert werden. Damit das Ganze funktioniert, muss in der Server/Host-Konfiguration mindestens allow_url_fopen auf on stehen. Die Funktionalität ist natürlich auf das Nötigste beschränkt.
Viel Spaß beim Ausprobieren und Erweitern!