92

Ich gebe in einigen Antworten einen Stream zurück, der den entsprechenden Content-Type-Header festlegt. Das Verhalten ich suche, ist dies:So legen Sie den Dateinamen der Antwort fest, ohne den saveas-Dialog zu erzwingen

  • Wenn der Browser in der Lage, Inhalte des angegebenen Inhaltstypen zu machen, dann sollte es sie im Browser-Fenstern angezeigt werden soll.

  • Wenn der Browser nicht weiß, wie der Inhalt gerendert wird, sollte das Dialogfeld saveas angezeigt werden, in dem der Dateiname in der Antwort angegeben werden soll.

Das Problem, dass, wenn ich den Content-Disposition-Header mit:

"attachment; filename =" myfile.txt ""

der Browser die savesas immer angezeigt werden Dialog.

Wenn ich die Content-Disposition nicht setze, ist der Dateiname im saveas-Dialog derjenige in der URL, der in meinem Fall nicht funktioniert.

Ich habe auch versucht, die Content-Disposition inline zu setzen, aber das Ergebnis ist das gleiche.

Antwort

128

Das könnte richtige Weg:

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

+6

Ich bin nicht sicher, was Sie meinten die von ‚nicht weit unterstützt‘ zurück, wenn Sie diese Antwort schrieb, und wünschen hatte man harte Fakten statt FUD gegeben . Ich habe gerade in IE 6, IE 8, modernen Chrome und modernen Firefox getestet, und es funktioniert in allen von ihnen; Soweit ich das beurteilen kann, ist es heutzutage absolut sicher. –

+0

Funktioniert nicht mit FireFox 37.0.2 und Internet Explorer 11.0.18. Mir wird ein Dialogfeld "Speichern unter" angezeigt. Chrome funktioniert jedoch. – angularsen

+2

Eigentlich funktioniert es sowohl in Firefox 37.0.2 und IE 11.0.18 (gerade getestet). Sie verwenden wahrscheinlich einen Inhaltstyp, den Ihr Browser nicht inline anzeigen kann. – Patonza

3

Ich bin mir nicht sicher, ob das standardmäßig möglich ist. Aus Sicherheitsgründen sendet der Browser nicht alle Inhaltstypen, die er verarbeiten kann, sondern nur ein paar Accept-Encoding, was in Ihrem Szenario nicht viel hilft.

Vielleicht können Sie Ihren Benutzer fragen, was er/sie bevorzugen, und diese Informationen in seinem Profil speichern. sein

Verwandte Themen