2008-12-06 13 views
9

यह सुनिश्चित नहीं है कि इस प्रश्न को कैसे शब्द दें ... इसलिए संपादन का स्वागत है! वैसे भी ... यहाँ जाता है।किसी ब्राउज़र में पीडीएफ स्ट्रीम करते समय फ़ाइल का नाम कैसे सेट करें?

मैं वर्तमान में पीडीएफ उत्पन्न करने के लिए क्रिस्टल रिपोर्ट का उपयोग करता हूं और केवल आउटपुट को उपयोगकर्ता को स्ट्रीम करता हूं। मेरे कोड ऐसा दिखाई देता है: इस कोड को चलाता है

System.IO.MemoryStream stream = new System.IO.MemoryStream(); 

stream = (System.IO.MemoryStream)this.Report.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); 

this.Response.Clear(); 
this.Response.Buffer = true; 
this.Response.ContentType = "application/pdf"; 
this.Response.BinaryWrite(stream.ToArray()); 
this.Response.End(); 

के बाद यह ब्राउज़र खोलने एक्रोबैट रीडर को पीडीएफ धाराओं। बहुत अच्छा काम करता है!

मेरी समस्या यह है कि जब उपयोगकर्ता फ़ाइल को सहेजने का प्रयास करता है तो यह वास्तविक फ़ाइल नाम पर डिफ़ॉल्ट होता है ... इस मामले में यह CrystalReportPage.pdf पर डिफ़ॉल्ट होता है। क्या वैसे भी मैं इसे सेट कर सकता हूं? यदि हां, तो कैसे?

किसी भी मदद की सराहना की जाएगी।

उत्तर

17
आमतौर पर

, सामग्री स्वभाव शीर्षक के माध्यम से - यानी

Content-Disposition: inline; filename=foo.pdf 

तो बस Headers.Add, या AddHeader, या जो कुछ भी यह है, साथ उपयोग करें:

response.Headers.Add ("सामग्री - डिस्पोजिशन "," इनलाइन; फाइलनाम = foo.pdf ");

(इनलाइन "ब्राउज़र में शो" है, लगाव है "एक फ़ाइल के रूप में सहेजें")

7
System.IO.MemoryStream stream = new System.IO.MemoryStream(); 

stream = (System.IO.MemoryStream)this.Report.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); 

this.Response.Clear(); 
this.Response.Buffer = true; 
this.Response.ContentType = "application/pdf"; 
this.Response.AddHeader("Content-Disposition", "attachment; filename=\""+FILENAME+"\""); 
this.Response.BinaryWrite(stream.ToArray()); 
this.Response.End(); 
संबंधित मुद्दे