İçerik-disposition (Content-disposition), MIME kullanıcı ajanına ekli dosyaları göstermesini emreden MIME protokolünün bir uzantısıdır. Internet Explorer başlığı aldığında, dosya indirme iletişim kutusunu etkinleştirir ve dosya adı kutusu otomatik olarak başlıkta belirtilen dosya adıyla doldurulur. (Bunun tasarım nedeniyle kaynaklandığını unutmayın; Bu özelliği, bir belgeyi kullanıcının bilgisayarına kaydetmek için kullanamazsınız, kullanıcıya nereye kaydedeceğini sormadan sormanız gerekir. )
Sunucu istemci tarayıcıya bir dosya gönderdiğinde, eğer bu tür bir dosya varsa tarayıcı tarafından destekleniyorsa, genellikle varsayılan olarak tarayıcı kullanılarak açılır, örneğin txt, jpg vb. ve bu doğrudan tarayıcıda görüntülenir; kullanıcıya kaydetme sorgusu gerekirse, bunu işlemek için İçerik-Dağıtlama (Content-Disposition) kullanmak gerekir, anahtar nokta ek eklemektir:
Response.AppendHeader("İçerik-Dağıt","ek; filename=FileName.txt");
Not: Bu size kaydetmenizi veya açmanızı önerir ve açmayı seçseniz bile, doğrudan açmak yerine Notepad gibi ilgili programla birlikte açılır.
Content-Disposition, kullanıcı istenen içeriği dosya olarak kaydetmek istediğinde varsayılan bir dosya adı sağlamaktır. Özel tanımlar şunlardır:
content-disposition = "içerik-dispozisyon" ":"
disposition tipi *( ";" disposition-parm )
disposition-type = "bağlılık" | disp-extension-token
disposition-parm = filename-parm | disp-extension-parm
filename-parm = "dosya adı" "=" tırnak dizisi
disp-extension-token = token
disp-extension-parm = token "=" ( token | tırnak dize )
Yani yukarıdakilerden spesifik örnekler görebiliriz:
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”
Elbette, dosya adı parametresi yol bilgisi içerebilir, ancak User-Agnet bu bilgiyi görmezden gelir ve sadece yol bilgisinin son kısmını dosya adı olarak kullanır. Bu başlığı yanıt tipi uygulaması/octet-stream'te kullanırsanız, içeriği doğrudan göstermek istemediğiniz anlamına gelir, ancak "dosya indirme" diyalogu açılır ve ardından "aç" mı yoksa "kaydedecek" mi karar vereceğinize karar verirsiniz.
Notlar:
1. Kodda Content-Disposition kullanılırken, tarayıcının indirme diyalogunu açmasını sağlamak için. response.addHeader("Content-Disposition","attachment"); Tarayıcı önbelleklemesini devre dışı bırakma konusunda hiçbir şey yapmadığından emin ol. Şöyle:
response.setHeader("Pragma", "No-cache"); response.setHeader("Önbellek-Kontrol", "Önbellek Yok"); response.setDateHeader("Süresi doluyor", 0);
|