Hallo an alle!
das Problem ist allseits bekannt. bei Klick auf einen HREf eines *.doc, *.pdf etc. -Dokuments, öffnet sich bei entsprechendem Plug-In die dazugehörige Anwendung. Ich will Dateien aber explizit zum Download anbieten - und ohne dem Hinweis "Rechter Mausklick...".
Es gibt die Möglichkeit, einen anderen Dateityp anzugeben.
... href="dummy.pdf" type="application/octet-stream"...
Funktioniert aber nicht bei IE, der liest tatsächlich die Dateiendung aus.
Fragen:
- Kann man mit JavaScript das Öffnen des "Speichern unter..."-Dialogs erzwingen (so wie print() das Drucken-Dialogfenster aufruft)?
- Wenn nein, gibt es andere Möglichkeit (ich arbeite mit JSP)?
Moin Moin !
In meinem Projekt (CGI-basiert) mache ich das so:
if (user_wants_to_download()) {
print "Content-type: application/x-save-this-file\r\n\r\n";
} else {
print "Content-type: ",real_mime_type_of_the_file(),"\r\n\r\n";
}
print content_of_the_file();
application/x-save-this-file ist:
* binärsicher ( --> application)
* nicht registriert ( --> x- = experimentell)
* gibt dem lesefähigen User einen Hinweis (--> "save-this-file")
* ansonsten völlig willkürlich gewählt, um mit keinem anderen MIME-Typen zu kollidieren
user_wants_to_download() kann z.B. einfach abfragen, ob in der URL ein Parameter "download" vorkommt (?download=0|1).
real_mime_type_of_this_file() liefert den "passenden" MIME-Type, also z.B. application/pdf.
content_of_the_file() liefert die eigentliche Datei.
Mein CGI benutzt diesen selbst erfundenen MIME-Typ konsequent, so daß User ihren Browser so einstellen können, daß Dateien mit diesem MIME-Typ automatisch gespeichert werden; der Browser fragt nur nach dem Dateinamen.
Du kannst sogar (außer beim IIS) den Dateinamen vorgeben, indem Du den Link passend machst:
http://meinserver/cgi-bin/meincgi.cgi/der-vorgegebene-dateiname.pdf?download=1;bla=fasel;laber=rhababer;
Der IIS sucht dann leider die Datei der-vorgegebene-dateiname.pdf im Verzeichnis(!!!) /cgi-bin/meincgi.cgi/. Kein anderer Webserver ist so "blöd", wenn es um das Zerlegen einer URL geht!
Wie schon andere hier bemerkten, benimmt sich der IE in Sachen MIME-Typen etwas daneben, eine URL, die auf .txt endet, wird IMMER als Text heruntergeladen und angezeigt, auch wenn der MIME-Typ z.B. image/jpeg ist.
Seltsam, daß immer die Microsoft-Produkte Probleme mit offenen Standards haben.
Alexander