Content-disposition yra MIME protokolo plėtinys, kuris nurodo MIME vartotojo agentui rodyti pridėtus failus. Kai "Internet Explorer" gauna antraštę, ji suaktyvina failo atsisiuntimo dialogo langą, o jos failo vardo laukas automatiškai užpildomas antraštėje nurodytu failo vardu. (Atkreipkite dėmesį, kad tai lemia dizainas; Negalite naudoti šios funkcijos dokumentui įrašyti į vartotojo kompiuterį, nepaklausę vartotojo, kur jį įrašyti. )
Kai serveris siunčia failą į kliento naršyklę, jei tai yra naršyklės palaikomas failo tipas, jis paprastai bus atidarytas pagal numatytuosius nustatymus naudojant naršyklę, pvz., txt, jpg ir kt., kuri bus rodoma tiesiai naršyklėje, jei vartotoją reikia paraginti išsaugoti, norint jį apdoroti, būtina naudoti "Content-Disposition", svarbiausia yra pridėti priedą:
Response.AppendHeader("Turinio išdėstymas","priedas; filename=FileName.txt");
Pastaba: Tai paragins jus išsaugoti arba atidaryti, ir net jei nuspręsite jį atidaryti, jis bus atidarytas su susijusia programa, pvz., Notepad, o ne IE atidaryti tiesiogiai.
"Content-Disposition" yra numatytojo failo pavadinimo pateikimas, kai vartotojas nori išsaugoti prašomą turinį kaip failą. Konkrečios apibrėžtys yra šios:
content-disposition = "turinio dispozicija" ":"
disposition-type *( ";" disposition-parm )
disposition-type = "priedas" | disp-extension-token
disposition-parm = failo pavadinimas-parm | disp-pratęsimas-parm
failo pavadinimas-parm = "failo pavadinimas" "=" kabutės eilutė
disp-extension-token = žetonas
disp-extension-parm = žetonas "=" ( žetonas | kabutės eilutė )
Taigi galime pamatyti konkrečius pavyzdžius iš aukščiau:
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”
Žinoma, failo pavadinimo parametre gali būti kelio informacijos, tačiau User-Agnet nepaisys šios informacijos ir naudos tik paskutinę kelio informacijos dalį kaip failo vardą. Jei naudojate šią antraštę atsakymo tipe application/octet-stream, tai reiškia, kad nenorite rodyti turinio tiesiogiai, tačiau pasirodys dialogo langas "failo atsisiuntimas", o tada jūs nuspręsite, ar "atidaryti", ar "išsaugoti".
Pastabos:
1. Kai naudojate Content-Disposition kodą, kad užtikrintumėte, kad naršyklė iššoka atsisiuntimo dialogo langą. response.addHeader("Turinio išdėstymas","priedas"); Įsitikinkite, kad nieko nepadarėte, kad išjungtumėte naršyklės talpyklą. Taip:
response.setHeader("Pragma", "Be talpyklos"); response.setHeader("Talpyklos valdymas", "Be talpyklos"); response.setDateHeader("Baigiasi galioti", 0);
|