2011-10-05 14 views
5

Denetleyici eylemlerimden biri kullanıcıya bir dosya döndürüyor. Kullanıcının dosya türüne bakılmaksızın indirme (açma/kaydetme) iletişimiyle sunulmasını isterim. Bu, dosya türü .doc, .docx, .xlsx vb. Olduğunda iyi çalışır, ancak .txt, .xps, .pdf (bazen) veya .html olduğunda, tarayıcıda açılır.Asp.net MVC FileContentResult - tarayıcıda açılmasını engelle

Dosyanın tarayıcıda açılmasını önleyebileceğim bir yol var ve yalnızca kullanıcının, geçerli sayfadan ayrılmadan ayrı bir pencerede açmasına izin vermem mümkün mü?

Dosya isteği, jQuery's $.ajax({}) kullanılarak yapılmıştır.

İlgili: tarayıcı isteğini işleyebilir ve tepki dize this ansewr ile açıklanabilir olarak dosyanın conent alma AJAX çağrısından farklı olarak pop-up vermek olması, ancak tarayıcıyı zorlayarak bu soru adresleri dosyayı işlemek için Bir kez alındığında belli bir şekilde.

cevap

5

Bunu istemci tarafında bir komut veya ayarlamayla yapabileceğinizi düşünmüyorum. Sunucuda bir şey yapmalısınız, böylece her dosya için application/octet-stream içerik türünü döndürür. Aksi halde, tarayıcı gelen dosyaya bakar ve kendi kuralları ve yeteneklerine göre ne yapacağına karar verir.

sunucunuzda bunu yapabiliyorsa, "attachment; filename=whatever.xyz"

+0

Bu, ne yazık ki, önlemek çalışıyorum şeydir 'application/unknown', aynı sonucu verir üzere "Content-Disposition" başlığını ayarlamayı deneyin. Kullanıcı rahatlığı için, dosyanın tek tıklamayla açılmasına izin vermek en iyisidir (sadece geçerli tarayıcı penceresinde değil). – yoozer8

+0

Bunu sunucunuzda yapabiliyorsanız, "İçerik-Atma" başlığını "attachment; filename = whatever.xyz" olarak ayarlamayı deneyin. – Ray

+0

Tam olarak budur. Teşekkürler. – yoozer8