2012-12-18 37 views
8

मेरे पास एक ऐसा पृष्ठ है जो वेब ब्राउज़र में एक बिनारी फ़ाइल, पीडीएफ, शब्द या एक्सेल भेजता है। Firefox और IE में दोनों एक संवाद पूछ क्या आप इस फ़ाइल से कोई लेना देना, "खुला" whant है या खोलता है "बचाने"फ़ाइल VIA ASP.NET कोडबेंड फ़ाइल डाउनलोड करते समय क्रोम को "ओपन फाइल डायलॉग" खोलने के लिए मजबूर कैसे करें?

enter image description here

लेकिन क्रोम सीधे आपके कंप्यूटर में सहेज लें।

क्या यह संभव है क्या क्रोम आपको यह पूछता है कि आप इस फ़ाइल के साथ क्या करना चाहते हैं, ब्राउज़र में फ़ाइल भेजने से पहले वेब प्रतिक्रिया में कुछ मेटाडेटा डालना?

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

जो एक डाउनलोड के लिए बाध्य करेगा:

उत्तर

9

यह संवाद बचाने के संकेत करने के लिए क्रोम के लिए मजबूर करने के लिए संभव नहीं है। उपयोगकर्ता को क्रोम की कॉन्फ़िगरेशन (उन्नत सेटिंग्स) पर उस व्यवहार को बदलना होगा।

enter image description here

+0

कि सेटिंग कहाँ होगा होगा? –

+0

@ValentinDespa ने उत्तर को अपडेट किया। – daniloquio

+0

लेकिन उपयोगकर्ता को इस चेक बॉक्स पर टिक लगाने के लिए कहने का व्यावहारिक अधिकार नहीं है, तो क्या इसके लिए कोई अन्य समाधान है? –

0

तुम इतनी ब्राउज़र जानता है कि कैसे बात आप की तरह द्वारा स्ट्रीमिंग को संभालने के लिए कुछ हेडर भेजने की जरूरत है। इसके अलावा अधिक जानकारी के लिए इस लिंक का संदर्भ लें:

http://www.devtoolshed.com/aspnet-download-file-web-browser

धन्यवाद

0

शायद यह उपयोगी

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();