So legen Sie den Dateinamen der Antwort fest, ohne das Dialogfeld "Speichern unter" zu erzwingen

119

Ich gebe einen Stream in einer Antwort zurück und setze den entsprechenden content-typeHeader. Das Verhalten, das ich suche, ist folgendes:

  • Wenn der Browser Inhalte des angegebenen Inhaltstyps rendern kann, sollte er diese im Browserfenster anzeigen.

  • Wenn der Browser nicht weiß, wie der Inhalt gerendert werden soll, sollte das Dialogfeld "Speichern unter" angezeigt werden, in dem der Dateiname der in der Antwort angegebene sein sollte.

Das Problem ist, dass wenn ich den Content-DispositionHeader setze mit:

"Anhang; Dateiname =" myfile.txt ""

Der Browser zeigt immer den Dialog "Speichern unter" an.

Wenn ich nicht einstelle Content-Disposition, ist der im Dialogfeld "Speichern unter" verwendete Dateiname derjenige in der URL, der in meinem Fall nicht funktioniert.

Ich habe auch versucht, auf einzustellen Content-Disposition, inlineaber das Ergebnis ist das gleiche.

Hugo Palma
quelle

Antworten:

170

Der richtige Weg könnte sein:

Content-Disposition: inline; filename="myfile.txt"

Patonza
quelle
7
Ich bin mir nicht sicher, was Sie damals mit "nicht weit verbreitet" gemeint haben, als Sie diese Antwort geschrieben haben, und wünschte, Sie hätten harte Fakten anstelle von FUD angegeben. Ich habe gerade in IE 6, IE 8, modernem Chrome und modernem Firefox getestet und es funktioniert in allen; Soweit ich das beurteilen kann, ist es heutzutage absolut sicher, dies zu verwenden.
Mark Amery
Funktioniert nicht mit FireFox 37.0.2 und Internet Explorer 11.0.18. Mir wird ein Dialogfeld "Speichern unter" angezeigt. Chrome funktioniert jedoch.
Angularsen
3
Tatsächlich funktioniert es sowohl in Firefox 37.0.2 als auch in IE 11.0.18 (gerade getestet). Sie verwenden wahrscheinlich einen Inhaltstyp, den Ihr Browser nicht inline anzeigen kann.
Patonza
1
Einige Hinweise, die auch in verschiedenen Diskussionen unter stackoverflow.com/questions/93551/… behandelt werden - Wenn Ihr Dateiname Leerzeichen enthält, müssen Sie doppelte Anführungszeichen ( ") um Ihren Dateinamen haben. Wenn Ihr Dateiname Nicht-ASCII-Zeichen enthält, sollte diese andere Frage eine Diskussion darüber enthalten, was zu tun ist.
Christopher Schultz
Funktioniert nicht für PDF in IE11.0.96. Kein Wunder, Chrome funktioniert einwandfrei.
user1566694
2

Ich bin mir nicht sicher, ob das standardmäßig möglich ist. Aus Sicherheitsgründen senden Browser nicht alle Inhaltstypen, die sie verarbeiten können, sondern nur einige Accept-Encoding, was in Ihrem Szenario nicht viel hilft.

Vielleicht können Sie Ihren Benutzer fragen, was er bevorzugt, und diese Informationen in seinem Profil speichern.

Rubens Farias
quelle