Распределение контента — это расширение протокола MIME, которое инструктует пользовательского агента MIME отображать подключённые файлы. Когда Internet Explorer получает заголовок, он активирует диалоговое окно загрузки файла, и окно с именем файла автоматически заполняется имя файла, указанного в заголовке. (Обратите внимание, что это вызвано замыслом; Нельзя использовать эту функцию для сохранения документа на компьютер пользователя, не спросив пользователя, где его сохранить. )
Когда сервер отправляет файл в браузер клиента, если это тип файла, поддерживаемый браузером, он обычно по умолчанию открывается с помощью браузера, например txt, jpg и т.д., которые отображаются непосредственно в браузере, если пользователя нужно запросить сохранить файл, необходимо использовать Content-Disposition для обработки файла, ключ — добавить вложение:
Response.AppendHeader ("Содержание-Разрешение","attachment; filename=FileName.txt»);
Примечание: Это подскажет сохранить или открыть, и даже если вы решите открыть, приложение откроется с помощью соответствующей программы, например Notepad, вместо того чтобы открыть IE напрямую.
Content-Disposition предназначен для предоставления имя файла по умолчанию, когда пользователь хочет сохранить запрошенное содержимое как файл. Конкретные определения следующие:
содержание-диспозиция = "содержание-диспозиция" ":"
тип disposition-type *( ";" disposition-parm )
Тип расположения = «привязанность» | disp-extension-token
disposition-parm = имя файла-parm | disp-extension-parm
filename-parm = "filename" "=" quoted-string
disp-extension-token = токен
disp-extension-parm = токен "=" ( токен | quoted-string )
Таким образом, мы можем увидеть конкретные примеры из вышеуказанного:
Cache-Control:private
Content-Disposition:attachment; filename=Index1.png
Content-Length:328462
Content-Type:image/png
Date:Fri, 14 Oct 2016 01:08:04 GMT
Server:Microsoft-IIS/8.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:5.2
X-Powered-By:ASP.NET
Content-Disposition: attachment; filename=“filename.xls”
Конечно, параметр имени файла может содержать информацию о пути, но User-Agnet игнорирует эту информацию и использует только последнюю часть информации в качестве имени файла. Если вы используете этот заголовок в приложении типа ответа/octet-stream, это значит, что вы не хотите отображать контент напрямую, но появится диалоговое окно «загрузка файла», и тогда вам предстоит решать, открывать или «сохранять».
Примечания:
1. При использовании Content-Disposition в коде, чтобы браузер появлялся в диалоговом окне загрузки. response.addHeader («Content-Disposition», «attachment»); Убедитесь, что вы ничего не делали с отключением кэширования браузера. Следующим образом:
response.setHeader ("Pragma", "No-cache"); response.setHeader ("Cache-Control", "No-cache"); response.setDateHeader("Expires", 0);
|