Sisu-dispositsioon on MIME protokolli laiendus, mis käsib MIME kasutajaagendil kuvada lisatud faile. Kui Internet Explorer päise vastu võtab, aktiveerib ta faili allalaadimise dialoogiakna ning selle failinime kast täitub automaatselt päises määratud failinimega. (Pane tähele, et see on põhjustatud disainist; Seda funktsiooni ei saa kasutada dokumendi salvestamiseks kasutaja arvutisse ilma, et peaksid küsima, kuhu seda salvestada. )
Kui server saadab faili kliendibrauserisse, siis kui see on brauseri poolt toetatud failitüüp, avatakse see tavaliselt vaikimisi brauseri kaudu, näiteks txt, jpg jne, mis kuvatakse otse brauseris; kui kasutajalt tuleb paluda salvestada, tuleb selle töötlemiseks kasutada Content-Dispositionit, võtmetähtsusega on lisada manus:
Response.AppendHeader("Content-Disposition","attachment; filename=FileName.txt");
Märkus: See kutsub sind salvestama või avama, ja isegi kui otsustad selle avada, avab see selle seotud programmiga, näiteks Notepadiga, mitte otse avamisega.
Content-Disposition tähendab vaikimisi failinime andmist, kui kasutaja soovib soovitud sisu salvestada failina. Täpsed definitsioonid on järgmised:
content-disposition = "Content-disposition" ":"
dispositsioonitüüp *( ";" disposition-parm )
dispositsioonitüüp = "kiindumus" | disp-extension-token
disposition-parm = failinimi-parm | disp-extension-parm
filename-parm = "failinimi" "=" tsitaat-string
disp-extension-token = token
disp-extension-parm = token "=" ( token | quoted-string )
Seega näeme konkreetseid näiteid ülaltoodust:
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”
Loomulikult võib failinime parameeter sisaldada teeinfot, kuid User-Agnet ignoreerib seda infot ja kasutab failinimena ainult tee info viimast osa. Kui kasutad seda päist vastusetüübi rakenduses/octet-streamis, tähendab see, et sa ei taha sisu otse kuvada, kuid ilmub "faili allalaadimise" dialoog ja siis pead ise otsustama, kas "avada" või "salvestada".
Märkmed:
1. Koodis Content-Disposition'i kasutamisel tagatakse, et brauser avaks allalaadimise dialoogi. response.addHeader ("Sisu-Lahendus","manus"); Veendu, et sa pole midagi teinud brauseri vahemällu salvestamise keelamiseks. Järgmine:
response.setHeader ("Pragma", "Vahemäluta"); response.setHeader("Cache-Control", "No-cache"); response.setDateHeader("Aegub", 0);
|