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.
Webhosting mit viel Software bei Alfahosting (Affiliate-Link)
<?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.
Webhosting bei Alfahosting - jetzt gratis testen! (Affiliate-Link)
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.
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
Grundlagen
HTML-Grundlagen
CSS-Grundlagen
Javascript-Grundlagen
PHP-Grundlagen
MySQL-Grundlagen
SEO-Grundlagen
Infos, Tipps, Vermarktung
Webdesign-Lexikon
Online-Werbung
PHP-Codeschnipsel
Praxisartikel