ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
530
530
EMPFEHLEN
-
Hallo
kann ich mit einem Script eine Datei dynamisch erzeugen und dann per header() in einem neuen Fenster automatisch zum download ausgeben?
Bei einem Link wäre das mit target="_blank" zu machen, aber geht es so auch?
EDIT: ich möchte die Datei eigentlich nicht auf dem Server zwischenspeichern.
-
hi!
hier ein beispiel-codesnipplet, wie man eine datei, die auf einem server liegt, als download dem browser übergibt:
zu beachten ist, dass $type eigentlich dem wirklichem typ der datei entsprechen sollte. aber so geht's theoretisch und etwas unschön auch.PHP-Code:
$file = "/Pfad/zur/dat.ei";
$file_name = "so_soll_ich_heis.sen";
$fp = fopen($file,"rb"); fseek($fp,0,SEEK_END);
$size = ftell($fp); rewind($fp);
$stream = fread($fp,$size);
fclose($fp);
$disposition = "attachment";
$type = "application/octet-stream";
Header("Content-Type: ". $type ."; name=\"". $file_name ."\"\r\n");
Header("Content-Length: ". $size ."\r\n");
Header("Content-Disposition: ". $disposition ."; filename=\"". $file_name ."\"\r\n");
echo($stream);
mattUnsere Stellengesuche:
HTML-CSS-Programmierer
Perl-Entwickler
Bist du fit genug? Bewirb dich jetzt!
Stand: 22.09.2005
-
Wie man die Datei ausgibt ist mir schon klar. Meine Frage, war aber, wie ich auf einer Seite HTML ausgeben kann und in einem neuen Fenster den Download starten lasse. Nach Möglichkeit per Header.
-
ach so...
hm, eine lösung dafür wäre, dass du deine html-seite generierst und in dieser einen meta-refresh einbaust, der dich an eine weitere php-seite weiterleitet, die ausschließlich die datei zum download anbietet. per metarefresh geht aber keine neue seite auf. das könntest du aber widerrum mit JavaScript hinbekommen, dann natürlich ohne metarefresh.
eine HTML-datei ausgeben und einen download im gleichem "zug" starten geht nicht, denn du kannst der ausgabe nur einen typ "zuweisen", damit der browser erkennt, was damit gemacht werden soll.
mal eine frage an dich: hast du ne ahnung, wie ich den mime-type einer datei rausbekomme, wenn ich php nicht mit der option --with-mime-magic kompiliert habe und mir somit die funktion mime_content_type() nicht zur verfügung steht?
mattUnsere Stellengesuche:
HTML-CSS-Programmierer
Perl-Entwickler
Bist du fit genug? Bewirb dich jetzt!
Stand: 22.09.2005
-
Schwierig. Du könntest per exec() mit head den Header der Datei auslesen und versuchen darüber was rauszufinden.Original geschrieben von matt
...mal eine frage an dich: hast du ne ahnung, wie ich den mime-type einer datei rausbekomme, wenn ich php nicht mit der option --with-mime-magic kompiliert habe und mir somit die funktion mime_content_type() nicht zur verfügung steht?...
EDIT: Ich habe es jetzt anders gemacht. Und zwar habe ich das target="_blank" einfach in das Formular geschrieben. Es war so einfach, dass ich nicht draufgekommen bin
.
Geändert von Wolfsbein (09.10.03 um 15:25 Uhr)
-
So jetzt bin ich es nochmal.
Der Speicherndialog wird korrekt angezeigt. Aber auf der Platte wird keine Datei erzeugt. Und wenn ich die Datei gleich mit dem Editor öffnen möchte, passiert auch nichts. Fehlt was? Btw: die Variable ist natürlich richtig.PHP-Code:header("Content-type: text/csv \r\n");
header("Content-Length: ". sizeof($strCSV) ."\r\n");
header("Content-Disposition: inline; filename=\"Ver_".$_POST['com'].".csv\" \r\n");
echo $strCSV;
-
hi!
kann ich dir leider nicht genau sagen. mir ist lediglich aufgefallen, dass du die datei als inline und nicht als attachment ausgibst. vielleicht ist das der fehler?
mattUnsere Stellengesuche:
HTML-CSS-Programmierer
Perl-Entwickler
Bist du fit genug? Bewirb dich jetzt!
Stand: 22.09.2005
-
Der gleiche Code funktioniert mittlerweile. Keine Ahnung woran es lag. Und inline nehme, da ich so afiak einen Fehler im IE umgehen kann?
-
die datei als attachment ausgeben ist auch im IE kein problem. hab's eben nochmal getestet. funktioniert sowohl im mozilla als auch im IE einwandfrei.
gruß,
mattUnsere Stellengesuche:
HTML-CSS-Programmierer
Perl-Entwickler
Bist du fit genug? Bewirb dich jetzt!
Stand: 22.09.2005
Ähnliche Themen
-
POST per Header senden
Von einfach nur crack im Forum PHPAntworten: 38Letzter Beitrag: 03.06.09, 22:29 -
Header -> Postdaten senden
Von Napofis im Forum PHPAntworten: 0Letzter Beitrag: 08.10.07, 04:41 -
PHP: Header für SWF Datenübertragung senden
Von Lukasz im Forum PHPAntworten: 1Letzter Beitrag: 20.08.06, 19:04 -
Header im Hintergrund senden
Von Pullmann im Forum PHPAntworten: 19Letzter Beitrag: 06.09.05, 10:03 -
Header senden bringt Probleme
Von Blaschki im Forum PHPAntworten: 6Letzter Beitrag: 26.05.05, 11:01





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren