Dateidownload ohne Sicherheitspopup
Sahra
- php
Hi,
ich erzeuge bei mir einen Download und zwar so:
$file="file.txt";
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=file.txt");
readfile($file);
Bei Servicepack 2 sagt mein Rechner aber: Download geblockt...
Wie kriege ich das denn nun weg?
Vielen Dank
Sahra
Hello Sahra,
ich erzeuge bei mir einen Download und zwar so:
$file="file.txt";
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=file.txt");
readfile($file);Bei Servicepack 2 sagt mein Rechner aber: Download geblockt...
Wie kriege ich das denn nun weg?
Handelt es sich denn bei der zu übertragenden Datei wirklich um ein Programm?
Das sagst Du nämlich mit dem "application/octet-stream" dem Browser. Und wenn der nun ausnahmsweise mal keine Sicherheitlücke hat und den Benutzer vor einem Programm warnt, dann ist das vollkommen richtig.
Den passenden MIME-Type für die datei kannst Du mit
mime_content_type($PfadZurDatei)
ermitteln ab PHP version 4.3.0
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
hi,
Handelt es sich denn bei der zu übertragenden Datei wirklich um ein Programm?
vermutlich nicht, wenn sie den dateinamen mit file.txt vorgibt.
Das sagst Du nämlich mit dem "application/octet-stream" dem Browser. Und wenn der nun ausnahmsweise mal keine Sicherheitlücke hat und den Benutzer vor einem Programm warnt, dann ist das vollkommen richtig.
Den passenden MIME-Type für die datei kannst Du mit
mime_content_type($PfadZurDatei)
ermitteln ab PHP version 4.3.0
der dürfte wohl für eine textdatei text/plain lauten - nur damit zeigt der browser eine textdatei idR. wieder sofort an, anstatt sie zum download anzubieten.
wenn der IE application/octet-stream mit SP2 nicht mehr akzeptieren will, bleibt vermutlich nur noch "speichern unter ..." als lösung, oder evtl. ein anderer content-type.
gruß,
wahsaga
Hello,
Handelt es sich denn bei der zu übertragenden Datei wirklich um ein Programm?
vermutlich nicht, wenn sie den dateinamen mit file.txt vorgibt.
Darauf sollte sie doch selbst kommen ;-)
Das sagst Du nämlich mit dem "application/octet-stream" dem Browser. Und wenn der nun ausnahmsweise mal keine Sicherheitlücke hat und den Benutzer vor einem Programm warnt, dann ist das vollkommen richtig.
Den passenden MIME-Type für die datei kannst Du mit
mime_content_type($PfadZurDatei)
ermitteln ab PHP version 4.3.0der dürfte wohl für eine textdatei text/plain lauten - nur damit zeigt der browser eine textdatei idR. wieder sofort an, anstatt sie zum download anzubieten.
Dann Sollte sie den "force download"-Header hinzugeben. Das verstehen inzwischen die meisten Browser und beachten es auch.
Und http://de.php.net/manual/de/function.mime-content-type.php funktioniert i.d.R. auch nur dann, wenn der Webserver auf einem Linux-Host läuft.
Sollte es dennoch nicht vorhanden sein, kann man sich meine Hilfslösung aus http://selfhtml.bitworks.de/debug/kontrolle.php rauskopieren und benutzen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi Tom,
also ich kriege die Fehlermeldung:
Fatal error: Call to undefined function mime_content_type() in ...datei.php
habe folgenden code
mime_content_type('file.txt');
und benutze die aktuellste php version auf dem server..
Gibt es keine andere Headerfunktion?
Bis dann
Sahra
Hallo
Hi,
ich erzeuge bei mir einen Download und zwar so:
$file="file.txt";
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=file.txt");
readfile($file);Bei Servicepack 2 sagt mein Rechner aber: Download geblockt...
Ich vermute, Folgendes trifft zu:
<zitat quelle="c't, 22-2004 Seite 218">
Der Internet Explorer blockiert den Download von Dateien, die der Benutzer
nicht explizit angefordert hat, sondern der zum Beispiel durch die HTML-
Anweisung META REFRESH von einer Webseite initiiert wird.
</zitat>
Deine Datei wird ja nicht direkt zum Download verlinkt, sondern es wird ein
Skript aufgerufen, dass die "file.txt" per Header ausliefert. Somit greift
der Schutz des SP 2, da es sich auch um Schadcode handeln könnte.
Wie kriege ich das denn nun weg?
<zitat quelle="c't, 22-2004 Seite 219">
[... Beschreibung der Möglichkeit, die Adresse der Datei zu ermitteln, falls
sie im Link als Parameter angehängt ist [1] ...] Leider lässt sich nicht immer die
Adresse der Datei ... ermitteln ... . Dann kann der Benutzer durch einen Klick
auf die Warnung unter der Adresszeile dem Internet Explorer den Download erlauben.
</zitat>
Ob es in dem Zusammenhang so schick aussieht, dem verschreckten Benutzer auf
der Website einen Beruhigungstext zu präsentieren, ist eine andere Frage.
[1] Kommt auf die Art der Übergabe an.
Tschö, Auge