Как установить имя файла ответа, не вызывая диалоговое окно «Сохранить как» - PullRequest
105 голосов
/ 16 ноября 2009

Я возвращаю поток в некотором ответе, устанавливая соответствующий заголовок content-type. Вот поведение, которое я ищу:

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

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

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

"attachment; filename =" myfile.txt ""

браузер всегда отображает диалоговое окно «Сохранить как».

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

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

Ответы [ 2 ]

156 голосов
/ 16 ноября 2009

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

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

2 голосов
/ 16 ноября 2009

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

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

...