Content-disposition е разширение на MIME протокола, който инструктира MIME потребителския агент да показва прикачените файлове. Когато Internet Explorer получи заглавието, активира диалоговия прозорец за изтегляне на файла и полето с името на файла автоматично се попълва с името на файла, посочено в заглавието. (Обърнете внимание, че това е причинено от дизайн; Не можете да използвате тази функция, за да запазите документ на компютъра на потребителя, без да попитате потребителя къде да го запази. )
Когато сървърът изпрати файл към клиентския браузър, ако това е тип файл, поддържан от браузъра, той обикновено се отваря по подразбиране чрез браузъра, като txt, jpg и др., които се показват директно в браузъра. Ако потребителят трябва да бъде подканен да запази, необходимо е да използва Content-Disposition за обработка, ключът е да добавиш прикачен файл:
Response.AppendHeader ("Content-Disposition","attachment; filename=FileName.txt");
Забележка: Това ще ви подкани да запазите или отворите, и дори ако решите да го отворите, ще го отвори с свързаната програма като Notepad, вместо IE да го отвори директно.
Content-Disposition е да предостави име на файл по подразбиране, когато потребителят иска да запази поисканото съдържание като файл. Конкретните дефиниции са следните:
съдържание-диспозиция = "Съдържание-Диспозиция" ":"
тип разположение *( ";" disposition-parm )
Тип на разположение = "привързаност" | disp-extension-token
disposition-parm = filename-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, това означава, че не искате да показвате съдържанието директно, но ще се появи диалог "файл download" и тогава е ваша задача дали да "отворите" или "запазите".
Бележки:
1. При използване на Content-Disposition в кода, за да се гарантира, че браузърът изскача диалога за изтегляне. response.addHeader ("Content-Disposition","attachment"); Увери се, че не си направил нищо за изключване на кеширането в браузъра. Както следва:
response.setHeader ("Pragma", "No-cache"); response.setHeader ("Cache-Control", "No-cache"); response.setDateHeader("Изтича", 0);
|