92

Я возвращаю поток в некотором ответе, устанавливая соответствующий заголовок типа содержимого. Поведение я ищу это:Как установить имя файла ответа без форматирования диалогового окна saveas

  • Если браузер способен отображать содержимое данного типа контента, то он должен отображать его в окне браузера.

  • Если браузер не знает, как отображать контент, он должен отображать диалог сохранения, в котором имя файла должно быть указано в ответе.

Проблема, что если я установить Content-Disposition заголовок с:

"патроном; имя файла =" myfile.txt ""

браузер всегда будет отображать savesas диалог.

Если я не устанавливаю Content-Disposition, имя файла, используемое в диалоговом окне сохранения, является адресом в URL-адресе, который не работает в моем случае.

Я также попытался настроить Content-Disposition на inline, но результат тот же.

ответ

128

Правильный путь может быть:

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

+6

Я не уверен, что вы имели в виду под «не имеет широкой поддержки» назад, когда вы писали этот ответ, и хочу, чтобы ты дал неопровержимые факты вместо FUD , Я просто тестировал в IE 6, IE 8, современный Chrome и современный Firefox, и он работает во всех них; насколько я могу судить, абсолютно безопасно использовать это в наши дни. –

+0

Не работает с моим FireFox 37.0.2 и Internet Explorer 11.0.18. Мне представлен диалог «Сохранить как». Chrome работает. – angularsen

+2

На самом деле он работает как в Firefox 37.0.2, так и в IE 11.0.18 (только что протестирован). Вероятно, вы используете Content-Type, который ваш браузер не может отображать в строке. – Patonza

3

Я не уверен, что это возможно по умолчанию. По соображениям безопасности браузер не отправляет все типы контента, которые он может обрабатывать, но всего несколько Accept-Encoding, что не очень помогает в вашем сценарии.

Возможно, вы сможете попросить своего пользователя, что он предпочитает, и сохранить его в своем профиле.