2012-03-27 8 views
9

में 'ओपन' चुनते समय Asp.Net फ़ाइल फ़ाइल त्रुटि डाउनलोड करें, मैं उपयोगकर्ता के लिए वर्ड डॉक्यूमेंट खोलने के लिए प्रतिक्रिया का उपयोग कर रहा हूं। यदि उपयोगकर्ता फ़ाइल को सहेजने का विकल्प चुनता है, तो यह इसे सहेजता है और फ़ाइल दिखती है कि इसे खोलने पर इसे कैसा होना चाहिए। यदि उपयोगकर्ता तुरंत फ़ाइल खोलने का विकल्प चुनता है, तो उन्हें यह कहते हुए एक त्रुटि मिलती है कि आईई फ़ाइल खोल नहीं सका। अगर वे 'पुनः प्रयास' चुनते हैं, तो एमएस वर्ड एक त्रुटि दिखाता है कि यह फ़ाइल नहीं ढूंढ सकता है। मेरी स्थिति दिखाते हुए स्क्रीन शॉट्स नीचे दिए गए हैं।आईएस 9

 this.Context.Response.Clear(); 
     this.Context.Response.ClearContent(); 
     this.Context.Response.ClearHeaders(); 
     this.Context.Response.BufferOutput = true; 
     this.Context.Response.ContentType = "application/msword"; 
     this.Context.Response.AppendHeader("Content-Length", bytes.Length.ToString()); 
     this.Context.Response.AddHeader("Content-Disposition", "attachment; filename=" + "Test Document.doc"); 
     this.Context.Response.BinaryWrite(bytes); 
     this.Context.ApplicationInstance.CompleteRequest(); 

यहाँ है स्क्रीन जब डाउनलोड के उपयोगकर्ता को संकेत:: इसके अलावा, यहाँ कोड मैं फ़ाइल को प्रदर्शित करने के लिए है है enter image description here

यहाँ है उपयोगकर्ता के बाद स्क्रीन को चुनता है ओपन ' enter image description here

उपयोगकर्ता 'पुनः प्रयास' चुनने के बाद स्क्रीन यहां है। यह स्क्रीन एमएस वर्ड के लिए आ रही है।

protected void GenerateMsWordDoc() 
    { 
     string strBody = "<html>" + 
      "<body>" + 
       "<div>Your name is: <b>Billy Bob</b></div>" + 
       "<table width='100%' style='background-color:#cfcfcf;'><tr><td>1st Cell body data</td><td>2nd cell body data</td></tr></table>" + 
       "Ms Word document generated successfully." + 
      "</body>" + 
      "</html>"; 
     string fileName = "MsWordSample.doc"; 
     // You can add whatever you want to add as the HTML and it will be generated as Ms Word docs 
     Response.AppendHeader("Content-Type", "application/msword"); 
     Response.AppendHeader ("Content-disposition", "attachment; filename="+ fileName); 
     Response.Write(strBody); 
    } 
+0

शब्द का कौन सा संस्करण उपयोग में है? – Mike

+0

माइक्रोसॉफ्ट वर्ड 2007 –

+0

क्या आपकी साइट का एक सीएसएस/साइट.css है? यदि हां, तो क्या आपने क्लाइंट साइड रिस्पॉन्स हैडर और सामग्री को देखने के लिए जांच की है कि क्या एंड्रॉवेस्ट के दौरान प्रतिक्रिया में कुछ भी शामिल नहीं है? – jbl

उत्तर

1

आप नमूना पोस्ट कर सकते हैं: enter image description here

**** संपादित **** मैं कोड ऑनलाइन का एक सा है कि मैं परीक्षण करने की कोशिश की और इस मुद्दे को अभी भी occures जब मैं इस समारोह फोन मिल गया है डेटा इस्तेमाल किया जा रहा है? मैंने आईई 9 में कोड के नीचे कोशिश की है ठीक काम करता है।

this.Context.Response.Clear(); 
this.Context.Response.ClearContent(); 
this.Context.Response.ClearHeaders(); 
this.Context.Response.BufferOutput = true; 
this.Context.Response.ContentType = "application/msword"; 
this.Context.Response.AppendHeader("Content-Length", "12"); 
this.Context.Response.AddHeader("Content-Disposition", "attachment; filename=" + "Test Document.doc"); 
this.Context.Response.BinaryWrite(new byte[] { }); 
this.Context.ApplicationInstance.CompleteRequest(); 

आपके हाल ही कोड भी ठीक काम कर रहा है। मैं आईई 9 का उपयोग कर रहा हूँ। नीचे संस्करण विवरण दिए गए हैं ... सामग्री-स्वभाव की filename पैरामीटर में

enter image description here

+0

नमूना डेटा काफी बड़ा है। यह एक और शब्द दस्तावेज़ है जिसे एक्सएमएल के रूप में सहेजा गया था। –

+0

क्या आप इसे छोटे डेटा के साथ परीक्षण कर सकते हैं और यदि समस्या बनी रहती है, तो कृपया डेटा साझा करें। – Pankaj

+0

मैंने एमएस वर्ड 2007 खोलकर इसका परीक्षण किया है। एक खाली दस्तावेज़ को .xml के रूप में सहेजें। फिर मैंने उस फाइल में पढ़ा और एक्सएमएल को स्ट्रिंग में स्टोर किया।उस स्ट्रिंग को लें, इसे बाइनरी में बदलकर चालू करें: बाइट [] बाइट्स = एन्कोडिंग। डीफॉल्ट.गेटबाइट्स (एक्सएमएल); फिर मैं प्रतिक्रिया को लिखने के लिए उस बाइट्स सरणी भेजता हूं। समस्या अभी भी ऐसा होती है। –

1

रिक्त स्थान के लिए अलग ब्राउज़र संस्करणों में त्रुटियों का कारण जाने जाते हैं। फ़ाइल कोट को डबल कोट्स में संलग्न करने का प्रयास करें:

this.Context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + "Test Document.doc" + "\""); 
+0

टिप के लिए धन्यवाद, लेकिन यह मेरी समस्या का समाधान नहीं किया। –

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