Розподіл контенту — це розширення протоколу MIME, який дає інструкції агенту користувача MIME відображати пов'язані файли. Коли Internet Explorer отримує заголовок, він активує діалогове вікно завантаження файлу, і вікно з назвою файлу автоматично заповнюється ім'ям файлу, зазначеним у заголовку. (Зверніть увагу, що це спричинено задумом; Ви не можете використати цю функцію для збереження документа на комп'ютері користувача, не запитавши, де його зберегти. )
Коли сервер надсилає файл до клієнтського браузера, якщо це тип файлу, підтримуваний браузером, він зазвичай відкривається за замовчуванням через браузер, наприклад txt, jpg тощо, які відображаються безпосередньо в браузері, якщо користувачу потрібно запропонувати зберегти файл, необхідно використовувати Content-Disposition для обробки, ключ — додати вкладення:
Response.AppendHeader ("Content-Disposition","attachment; filename=FileName.txt»);
Примітка: Це запропонує зберегти або відкрити файл, і навіть якщо ви вирішите відкрити, він відкриється за допомогою відповідної програми, наприклад Notepad, замість того, щоб IE відкривати його напряму.
Content-Disposition — це надання імені файлу за замовчуванням, коли користувач хоче зберегти запитуваний контент як файл. Конкретні визначення такі:
content-disposition = "Content-Disposition" ":"
тип disposition-type *( ";" disposition-parm )
Disposition-type = «прихильність» | disp-extension-token
disposition-parm = ім'я файлу-parm | disp-extension-parm
filename-parm = "ім'я файлу" "=" 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 ігнорує цю інформацію і використовує лише останню частину інформації про шлях як ім'я файлу. Якщо ви використовуєте цей заголовок у типі відповіді application/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);
|