Dispoziția conținutului este o extensie a protocolului MIME, care instruiește agentul utilizator MIME să afișeze fișierele atașate. Când Internet Explorer primește antetul, activează fereastra de dialog pentru descărcarea fișierului, iar caseta cu numele fișierului este completată automat cu numele fișierului specificat în antet. (Rețineți că acest lucru este cauzat de design; Nu poți folosi această funcție pentru a salva un document pe calculatorul unui utilizator fără să întrebi unde să-l salveze. )
Când serverul trimite un fișier către browserul client, dacă este un tip de fișier suportat de browser, acesta va fi de obicei deschis implicit folosind browserul, cum ar fi txt, jpg etc., care vor fi afișate direct în browser; dacă utilizatorul trebuie să fie solicitat să salveze, este necesar să folosească Content-Disposition pentru a-l procesa, cheia este să adaugi un atașament:
Response.AppendHeader("Content-Disposition","attachment; filename=FileName.txt");
Notă: Acest lucru te va solicita să salvezi sau să îl deschizi, iar chiar dacă alegi să-l deschizi, îl va deschide împreună cu programul asociat, cum ar fi Notepad, în loc să îl deschizi direct.
Dispoziția de conținut este pentru a oferi un nume implicit de fișier atunci când utilizatorul dorește să salveze conținutul solicitat ca fișier. Definițiile specifice sunt următoarele:
dispoziția conținutului = "Dispoziția conținutului" ":"
Tipul dispoziției *( ";" dispoziție-parm )
Tip-dispoziție = "atașament" | disp-extension-token
dispoziție-parm = nume-fișier-parm | disp-extension-parm
Numefișier-parm = "Nume fișier" "= șirul ghilimelat
disp-extension-token = token
disp-extension-parm = token "=" ( token | ghilimel-string )
Așadar, putem vedea exemple specifice din cele de mai sus:
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”
Desigur, parametrul de nume de fișier poate conține informații despre traseu, dar User-Agnet va ignora aceste informații și va folosi doar ultima parte a informațiilor de traseu ca nume de fișier. Dacă folosești acest antet în aplicația de tip răspuns/fluxul de octet, înseamnă că nu vrei să afișezi conținutul direct, dar va apărea un dialog de "descărcare fișier", iar atunci depinde de tine să decizi dacă să "deschidi" sau să "salvezi".
Note:
1. Când se folosește Content-Disposition în cod pentru a te asigura că browserul afișează dialogul de descărcare. response.addHeader("Conținut-Dispoziție","atașament"); Asigură-te că nu ai făcut nimic în privința dezactivării cache-ului browserului. Așa cum urmează:
response.setHeader("Pragma", "No-cache"); response.setHeader("Control-cache", "No-cache"); response.setDateHeader("Expiră", 0);
|