2009-08-13 11 views
7

मेरे पास लिंकबूटन के साथ एक एएसपीएक्स पेज है जो जावास्क्रिप्ट को उपयोगकर्ताओं द्वारा डाउनलोड करने के लिए ब्राउज़र में फ़ाइलों को स्ट्रीम करने के लिए एक नया एएसपीएक्स पृष्ठ खोलने के लिए आग लगाता है।आईई 7 बग? - फ़ाइल डाउनलोड करते समय तत्काल सहेजें/खोलें - सी # एएसपीनेट 3.5

एक्सपी एसपी 3, आईई 7 और फ़ायरफ़ॉक्स 3.5 पर विकास और यूनिट परीक्षण, निम्नलिखित कोड का उपयोग करते हुए (सामग्री-डिस्पोजिशन टैग में "अनुलग्नक" भाग होने की कुंजी), दोनों एक संवाद बॉक्स को संकेत देते हैं कि क्या मैं सहेजना चाहता हूं या दस्तावेज़ खोलते हैं, जो है मैं वास्तव में क्या चाहते हो:

 private void WriteFileToBrowser(Byte[] requestFile, string filename, String m_mimeType, String m_format) 
    { 
     Response.Clear(); 
     Response.AddHeader("Content-Disposition", "attachment;filename=" + filename + "." + m_format); 
     Response.ContentType = m_mimeType; 
     Response.BinaryWrite(requestFile); 
     Response.Flush(); 

    } 

जब मैं एक Windows 2003 सर्वर को यह तैनाती और एक ही aspx पृष्ठ पर नेविगेट, Firefox 3.5 सही ढंग से एक को बचाने/ओपन विकल्प के लिए पूछता है के रूप में उम्मीद चूंकि यह एफएफ में डिफ़ॉल्ट ऑपरेशन है।

जब मैं आईई 7 में नेविगेट करता हूं और डाउनलोड करने के लिए क्लिक करता हूं, तो मुझे एक पॉप अप विंडो मिलती है जो 1/8 वें दूसरे शीर्ष के लिए दृश्यमान होती है ... और गायब हो जाती है। सहेजने/खोलने के लिए कोई संकेत नहीं।

तो मैं IE 7 में जाने -> उपकरण -> इंटरनेट विकल्प -> सुरक्षा -> कस्टम स्तर -> डाउनलोड

स्वत: फ़ाइल डाउनलोड के लिए उत्साह अक्षम है। जब मैं इसे सक्षम करने के लिए इसे जांचता हूं तो मुझे सही/सही काम करने के लिए सहेजें/ओपन प्रॉम्प्ट मिलता है।

तो मेरा सवाल है ..... क्या किसी ने इसके आसपास काम किया है? मैंने उन चीजों का एक गुच्छा करने की कोशिश की है जो लोग विभिन्न शीर्षलेख टैग जैसे कैश, प्राग्मा इत्यादि के साथ काम करने का दावा करते हैं ... इनमें से कोई भी इस तथ्य के आसपास नहीं आता है कि आईई में डिफ़ॉल्ट रूप से डाउनलोड संपत्ति अक्षम है।

+0

मैंने कुछ ऐसा करने की कोशिश की है और यह आईई 7,8 में काम करता है। क्या आप m_mime टाइप का सटीक मान प्रदान कर सकते हैं जिसका आप उपयोग करते हैं? पैरामीटर सूची "एप्लिकेशन/पीडीएफ", "पीडीएफ" –

+0

का उपयोग कर परीक्षण के लिए उपयोग कर रहे हैं। एप्लिकेशन/ज़िप कुछ जो आईई 7 अपनी खिड़की के भीतर प्रदर्शित नहीं कर सकता है। –

+0

क्या आप अन्य लोगों को आजमाएं उदाहरण के लिए इसे उपयोग करने के लिए –

उत्तर

2

हमने हाल ही में हमारे कस्टम वेब ढांचे में जेनरेट की गई रिपोर्ट डाउनलोड करने के हमारे कार्यान्वयन के साथ एक समान समस्या में भाग लिया। शोध ने हमें आपके द्वारा वर्णित एक ही दृष्टिकोण की कोशिश करने का नेतृत्व किया (सामग्री-विस्थापन सेटिंग)।

समस्या आईई 7 और सुरक्षा क्षेत्र से संबंधित है। डिफ़ॉल्ट रूप से, कुछ क्रियाएं उपयोगकर्ता द्वारा स्पष्ट रूप से शुरू की जानी चाहिए। आप Understanding and Working in Protected Mode Internet Explorer और About Window Restrictions

0

इस समस्या से संबंधित नहीं हैं लेकिन आपको अपने आउटपुट में फ़ाइल नाम उद्धृत करने की आवश्यकता है। फ़ाइल नाम में रिक्त स्थान फ़ाइल डाउनलोड करते समय फ़ाइल नाम को पेंच कर देगा।

Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "." + m_format +"\""); 
0

प्रयास करें यह

संरक्षित शून्य Button1_Click (वस्तु प्रेषक, EventArgs ई) { Response.ContentType = "application/पीडीएफ"; प्रतिक्रिया। क्लीयर(); प्रतिक्रिया। ट्रांसमिशनफाइल ("test.pdf"); Response.End(); }

+0

यदि आप मेरे उदाहरण में देखते हैं, तो फ़ाइल फ़ाइल सिस्टम से नहीं है, यह ब्राउज़र पर लिखने के लिए बाइनरीवाइट() का उपयोग करके बाइट्स की एक सरणी है। TransmitFile() इस मामले में तब तक काम नहीं करेगा जब तक कि मैं सिस्टम पर भौतिक रूप से फ़ाइलों को इकट्ठा नहीं करता। –

1

यदि आप अपने पृष्ठ को विश्वसनीय साइटों पर जोड़ देंगे तो आप फ़ाइल डाउनलोड करने में सक्षम होंगे। आपके द्वारा चलाए जा रहे सभी साइटों को विकसित करते समय आप इस क्षेत्र में हैं।

आप अपने अनुरोध के अंत तक

HttpContext.Current.ApplicationInstance.CompleteRequest(); 

जोड़कर इंटरनेट एक्सप्लोरर के लिए मजबूर करने की कोशिश कर सकते हैं।

अन्यथा आप दस्तावेज़ को लिंक पोस्ट करने का प्रयास कर सकते हैं, इसलिए ब्राउज़र उपयोगकर्ता इंटरैक्शन की प्रतिक्रिया के रूप में अनुरोध को देखता है।

0

यदि यह आवश्यक नहीं है कि जावास्क्रिप्ट का उपयोग करके एक नया पृष्ठ खोला गया है, तो आप एस्पैक्स पेज पर Response.Redirect() का उपयोग कर सकते हैं। इसे सेव/ओपन डायलॉग खोलना चाहिए।

संबंधित मुद्दे