Bilderdownload durch PHP
Hallo,
ich möchte, dass ich beim klick auf einen Link zu einer PHP Datei, welche ein Bild ausgeben soll, dass Bild nicht geöffnet wird, sondern gedownloadet wird.
Ich habe inzwischen rausgefunden, wie man das mit dem Download hinbekommt:
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$bildername\"");
Mein Problem ist jetzt, dass ich das Bild über eine URL von einem anderen Server (der natürlich von mir ist) runterladen will und das Bild dann über die PHP Datei ausgebe.
Dazu dachte ich mir
readfile("http://www.urlzumeinemserver.de//".$bildername);
könnte klappen.
Leider lade ich dann immer nur eine Datei von 0KB runter.
Vielleicht kann mir jemand sagen, wie das richtig geht.
Danke schonmal
Luac.
Antwort schreiben
Antwort 1 von Supermax vom 09.12.2019, 15:32 Options
Ist auf deinem Server (wo der o.g. Code läuft) die Option "allow_url_fopen" aktiviert? Viele Hoster deaktivieren diese aus Sicherheitsgründen.
Antwort 2 von luac. vom 09.12.2019, 19:34 Options
Hi,
die Option "allow_url_fopen" ist aktiviert.
luac
Antwort 3 von luac. vom 09.12.2019, 19:35 Options
Die Frage die sich mir inzwischen stellte ist, ob man mit readfile auch externe Dateien abrufen kann, oder nur welche, die Lokal vorhanden sind.
Luac
Antwort 4 von Supermax vom 09.12.2019, 19:49 Options
readfile() verwendet meines Wissens nach dieselben Handler wie auch fopen() etc., d.h. wenn fopen() den Zugirff auf externe Dateien unterstützt, sollte auch readfile() dies unterstützen.
Vielleicht schlägt der Zugriff auf die entfernte Datei ja aus einem anderen Grund fehl, etwa ein fehlerhafter Dateiname (doppelter /).
Antwort 5 von luac. vom 23.12.2019, 23:46 Options
Hallo,
ich habe eben per Zufall die Lösung für mein Problem gefunden.
Man muss im header noch die Dateigröße festlegen:
header("Content-Length: ".filesize($file));
Das wärs.
Schöne Festtage
Luac