Sie sind hier: Startseite -> PHP-Grundlagen -> externes Bild (file_get_content)

Mit PHP und file_get_contents externen Bild holen

Transfer externer Bilder und Speicherung am eigenen Server

Immer wieder kommt man in die Situation, dass man berechtigt ein Bild von einem anderen Server holen soll, das auf den eigenen Server gespeichert wird. Ein praktisches Beispiel kann die Datenübertragung von einer Webseite zur anderen sein und um Traffic zu sparen, möchte der Betreiber der ersten Seite, dass auch die Bilder übernommen werden, sodass der Aufruf der Bilder nicht zusätzliche Ressourcen verbraucht. Das geht nur, wenn man das Bild nicht per Link, sondern real als Datei übernimmt.

Dazu braucht es entsprechende Daten und natürlich auch die Zustimmung - das kann etwa bei einem Verbund von Infoseiten passieren oder auch bei eigenen Portalen, die man selbst betreibt, die aber auch auf verschiedenen Servern laufen könnten.

Externes Bild mit PHP speichern

<?php
$contents=file_get_contents("$bildadresse");
$contents1= str_replace("url entfernen","",$bildadresse);
$savefile = fopen("/eigener Pfad für das Bild/".$contents1, "w");
fwrite($savefile, $contents);
fclose($savefile);
}
?>

Das Grundproblem beim Übertragen von Bilder durch ein vollautomatisch Skript sind meistens die Pfade, weil diese natürlich immer anders lauten. Das Übertragen der Bilddatei ist hingegen kein Problem. Der Pfad ist damit nicht URL/Dateiname, sondern der interne Pfad am Server vom root zur Bilddatei selbst und muss ermittelt werden, bevor man den Transfer andenken kann.

Im Beispiel passiert die Übertragung mit file_get_contents, wobei die Variable $bildadresse schon vorher definiert sein muss - die Variable ist gleichzeitig der Link zum Bild und damit holt sich PHP die Datei.

In der zweiten Zeile wird mit str_replace die bisherige URL entsorgt und in der dritten Zeile wird stattdessen mit dem Befehl fopen der interne Pfad festgelegt und der Bildname angehängt. Damit erreicht man die echte Adresse des eigenen Systems und ist mit fwrite fähig, das externe Bild intern abzuspeichern.

Wichtig ist dabei, dass beim Befehl fopen richtig gearbeitet wird. Falsch wäre

fopen("das_ist_mein_pfad".$contents1, "w");

Richtig ist hingegen

fopen("/das_ist_mein_pfad/".$contents1, "w");

Auf den ersten Blick fällt nichts Großartiges auf, aber wenn die beiden "/" am Beginn und Ende des Pfades fehlen, wird das Beispiel nicht funktionieren.

Buchtipp: PHP und MySQL für Einsteiger (Thalia)*
* = Affiliate-Link; bei Kauf unterstützen Sie diese Plattform

Lesen Sie auch

PHP + Bild ist eine Lösung, die für manche Einsteiger sehr schwierig wirkt, aber es gar nicht unbedingt sein muss. Nicht selten hat man es mit hochgeladenen Bildern zu tun, die es zu verarbeiten gilt. Sie müssen am richtigen Ort gespeichert werden und man braucht vielleicht ein Vorschaubild. Das externe Bild muss einmal verstanden werden und seine Dimensionen erkannt sein.

Dann gilt es, ein Vorschaubild zu erzeugen, das automatisch von einem Skript aufgebaut und gespeichert werden kann, wenn ein Nutzer ein neues Bild hochgeladen hat.

Themenseiten

Diesen Artikel teilen

Infos zum Artikel

Mit file_get_content Bilder holenArtikel-Thema: Mit PHP und file_get_contents externen Bild holen
Beschreibung: Mit Hilfe von ✅ file_get_contents gelingt es per PHP, ✅ externe Bilder auf den eigenen Server zu transferieren.

Kategorien

Grundlagen
HTML-Grundlagen
CSS-Grundlagen
Javascript-Grundlagen
PHP-Grundlagen
MySQL-Grundlagen
SEO-Grundlagen

Infos, Tipps, Vermarktung
Webdesign-Lexikon
Online-Werbung
PHP-Codeschnipsel
Praxisartikel