2012-12-18 16 views
8

Web tarayıcısına binari dosyası, pdf, word veya excel gönderen bir sayfam var. firefox ve IE her iki Eğer bu dosya ile yapmak "açık" whant veya ne soran bir iletişim kutusu açarChrome, bir dosyayı indirirken "açık dosya iletişim kutusu" nu açmak için nasıl zorlanır vía ASP.NET codebehind?

enter image description here

ama Krom doğrudan bilgisayarınıza kaydedin "kaydet".

yapmak mümkün mü? Bu dosyada tarayıcıya göndermeden önce bazı meta verileri web yanıtına yerleştirerek, bu dosyanın nolu kısmını yapmak ister misiniz?

Response.ContentType 
Content-Disposition, application,and 
filename=" + FileName 

bir indirme zorlar:

cevap

9

O kurtarmak iletişim istemi Chrome'u zorlamak mümkün değildir. Kullanıcı bu davranışı krom yapılandırması (gelişmiş ayarlar) üzerinde değiştirmelidir.

belki

enter image description here

+0

Nerede o ayar olurdu yararlı olacaktır? –

+0

@ValentinDespa cevabı güncelledi. – daniloquio

+0

Ancak bu onay kutusunu işaretlemesini isteyen kullanıcı doğru değil, Yani bunun için başka bir çözüm var mı? –

0

o

System.String filePath = "c:\\tempFile.pdf" 
System.IO.FileInfo fileInfo = new FileInfo(filePath); 

System.Web.HttpContext context = System.Web.HttpContext.Current; 
System.Web.HttpResponse response = context.Response; 
response.Clear(); 
response.ClearHeaders(); 
response.ClearContent(); 
response.ContentType = "application/pdf"; 
response.AppendHeader("content-type", "application/pdf"); 
response.AppendHeader("content-length", fileInfo.Length.ToString()); 
response.AppendHeader("content-disposition", String.Format("attachment; filename={0}.pdf", outputFileName)); 
response.TransmitFile(filePath); 
response.Flush(); // this make stream and without it open chrome save dialog 
context.ApplicationInstance.CompleteRequest(); // send headers and c# server-side code still continue 

System.IO.File.Delete(filePath); // clean cache here if you need 

response.End(); 
İlgili konular