2011-04-19 14 views
6

क्या एक अस्थायी फ़ोल्डर में सहेजे बिना ताज़ा जेनरेट की गई OpenXML (docx) फ़ाइल के लिए एएसपी.Net पृष्ठ में डाउनलोड प्रदान करने का कोई तरीका है?अस्थायी फ़ाइल के बिना OpenXML फ़ाइल डाउनलोड

MSDN पर मुझे केवल एक temp फ़ाइल का उपयोग करने के लिए एक ट्यूटोरियल मिला, लेकिन मैंने WordprocessingDocument.MainDocumentPart.GetStream() का उपयोग करने और सीधे स्ट्रीम आउट करने के बारे में सोचा।

+0

यह इस प्रश्न के डुप्लिकेट की तरह दिखता है। http://stackoverflow.com/questions/393647/response-content-type-as-csv आप सीधे डेटा पर अपना डेटा लिखकर उसी समाधान का उपयोग करने में सक्षम होना चाहिए। – kareem

उत्तर

12

जब आप दस्तावेज़ बनाते हैं तो MemoryStream बैकिंग स्टोर के रूप में उपयोग करें। फिर सामान्य रूप से दस्तावेज़ बनाएं और बंद करें और क्लाइंट को मेमोरी स्ट्रीम की सामग्री की सेवा करें।

using(var stream = new MemoryStream()) 
{ 
    using(var doc = WordprocessingDocument.Create(stream, WordprocessingDocumentType.Document, true) 
    { 
     ... 
    } 
    stream.Position = 0; 
    stream.CopyTo(Response.OutputStream); 
} 

सिर्फ MainDocumentPart हड़पने क्योंकि, जैसा कि नाम का तात्पर्य, इस दस्तावेज़ पैकेज, नहीं सब कुछ का सिर्फ एक हिस्सा है मत करो।

आपको सामग्री प्रकार और स्वभाव के लिए प्रतिक्रिया शीर्षलेख भी सेट करने की आवश्यकता होगी।

1

Stream.CopyTo() .NET 4.0 में आपको यहां मदद कर सकता है।

WordprocessingDocument.MainDocumentPart.GetStream().CopyTo(Response.OutputStream); 

आपको अभी भी शीर्षलेखों को एमआईएम प्रकार, सामग्री-स्वभाव आदि के लिए सेट करने की आवश्यकता होगी।

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