Як встановити ім'я файлу відповіді, не примушуючи діалогове вікно "зберегти як"


122

Я повертаю потік у відповіді, встановлюючи відповідний content-typeзаголовок. Поведінка, яку я шукаю, така:

  • Якщо браузер здатний відтворити вміст даного типу вмісту, він повинен відобразити його у вікні браузера.

  • Якщо браузер не знає, як відтворити вміст, він повинен відобразити діалогове вікно "зберегти як", де ім'я файлу повинно бути таким, яке вказано у відповіді.

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

"вкладення; ім'я файлу =" myfile.txt ""

браузер завжди відображатиме діалогове вікно "зберегти як".

Якщо я не встановлю Content-Disposition, ім'я файлу, яке використовується у діалоговому вікні "Зберегти як", це те в URL-адресі, яке не працює в моєму випадку.

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

Відповіді:


173

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

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


7
Я не впевнений, що ви мали на увазі під словом "не широко підтримується", коли ви писали цю відповідь, і хотіли б, щоб ви наводили важкі факти замість FUD. Я щойно тестував у IE 6, IE 8, сучасному Chrome та сучасному Firefox, і це працює у всіх них; наскільки я можу зрозуміти, сьогодні використовувати це абсолютно безпечно.
Mark Amery

Не працює з моїми FireFox 37.0.2 та Internet Explorer 11.0.18. Я отримаю діалогове вікно Зберегти як. Chrome працює.
angularsen

3
Насправді він працює як у Firefox 37.0.2, так і в IE 11.0.18 (щойно протестований). Ймовірно, ви використовуєте Content-Type, який ваш браузер не може відображати вбудовано.
Патонца,

1
Кілька приміток, які також охоплюються різними обговореннями на stackoverflow.com/questions/93551/… - якщо у вашому імені файлу є пробіли, "навколо вашого імені файлу потрібно мати подвійні лапки ( ). Якщо у вашому імені файлу є символи, що не є ASCII, ви повинні побачити це інше запитання для обговорення того, що робити.
Крістофер Шульц,

Не працює для PDF у IE11.0.96. Не дивно, що Chrome працює чудово.
user1566694

2

Я не впевнений, що це можливо за замовчуванням. З міркувань безпеки браузери надсилають не всі типи вмісту, з якими вони можуть впоратися, а лише декілька Accept-Encoding, що не надто допомагає у вашому сценарії.

Можливо, ви можете запитати у свого користувача, що їм більше подобається, і зберегти цю інформацію у своєму профілі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.