Kann mit jemand sagen, wie dieser „Artikel-Speichern“-Button in diesem Fentser rechts oben funktioniert.
Via CGI wird ein Perl-Script gestartet, was wahrscheinlioch den Ausgabestrom definiert, erzeugt und mit einem speziellen MIME-Type den Response übergibt.
Ich habe das ganze mit einem Servlet probiert, aber bei mir kommt nur der Plain-Text im Browser-Fenster. Ich möchte aber auch den Speichern-Dialog erscheinen lassen.
Kann mit jemand sagen, wie dieser
„Artikel-Speichern“-Button in diesem
Fentser rechts oben funktioniert.
hast Du doch schon selber
Via CGI wird ein Perl-Script gestartet,
was wahrscheinlioch den Ausgabestrom
definiert, erzeugt und mit einem
speziellen MIME-Type den Response
übergibt.
Genau. Als MIME-Type mußt Du aber nicht unbedingt das zurückgeben, was die Datei selber ist, sondern etwas, bei dem der Browser mit einem „Speichern“-Dialog reagiert. Speichern tut er ohnehin ohne MIME-Type.
Dafür eignen sich die application/*-Typen, z.B. application/octet-stream. Diesen jedenfalls benutzt wer-weiss-was
Funktioniert gut, aber bei Euch erscheint standardmäßig *.txt als Dateityp, bei mir erscheint zunächst *.html. Es ist aber
eigentlich Text.
'nen Tip?
Und dann noch was, die lokal abgespeicherte Datei scheint die NewLines „\n“ nicht richtig verarbeitet zu haben.
im Notepad kommen nur
; im Wordpad geht es.
Was muß ich da ändern?
Funktioniert gut, aber bei Euch erscheint
standardmäßig *.txt als Dateityp, bei mir
erscheint zunächst *.html. Es ist aber
eigentlich Text.
erweitere den Header der Datei um die Zeile:
Content-Disposition: filename=name.txt
Den Namen kannst Du dann noch passend wählen
Und dann noch was, die lokal
abgespeicherte Datei scheint die NewLines
„\n“ nicht richtig verarbeitet zu haben.
im Notepad kommen nur
;
(Hast Du da einen HTML-Tag eingegeben?)
im Wordpad geht es.
Was muß ich da ändern?
Hm, das ist wohl mal wieder das Problem mit den unterschiedlichen Zeilenumbrüchen bei den Betriebssystemen. Eine Application wird von Unix aus (selbstverständlich *g*) binär übertragen, so daß die Umbrüche nicht umgewandelt werden; dies müßtest Du dann manuell machen. In etwa so (Quickhack):
Das sollte dann zumindest auf Windows-Systemen laufen; wenn der Zielrechner Unix (oder Mac, oder Amiga, oder…) ist, wird die Datei vermutlich unschöne Leerzeilen haben.
Könntest Du das noch mal genauer erläutern?
Im PHP gibt es z.B. einen Befehl, um einen Header zu senden. Ich habe folgendes probiert, was aber nicht funktioniert hat:
Könntest Du das noch mal genauer
erläutern?
Im PHP gibt es z.B. einen Befehl, um
einen Header zu senden. Ich habe
folgendes probiert, was aber nicht
funktioniert hat:
Auch mit zwei separaten Header-Befehler
in dieser Art ging es nicht
naja, den Befehl gibt es nun mal nicht…
Du solltest wissen, daß der Header das ist, was das Script vor der ersten Leerzeile ausgibt. Du printest also obige Zeilen ganz normal aus, jeweils mit „\n“ beendet, und am Ende folgt noch ein weiteres „\n“ (für die Leerzeile"):
Alternativ dazu kannst Du Dich mit dem Modul CGI.pm beschäftigen. In der bei Perl mitgelieferten Dokumentation (hier: „perldoc CGI“) steht an sich alles drin, was Du dazu brauchst; auch wie man den Header definiert.