2013-10-30 5 views
13

पर डाउनलोड करें मैं एक एफटीपी साइट से सीधे एक एक्सेल फ़ाइल लोड करना चाहता हूं जो मेमोरी स्ट्रीम में है। फिर मैं OpenExcel (स्ट्रीम) विधि का उपयोग कर FarPoint स्प्रेड नियंत्रण में फ़ाइल खोलना चाहता हूं। मेरा मुद्दा यह है कि मुझे यकीन नहीं है कि फाइल को सीधे मेमोरी में डाउनलोड करना संभव है या नहीं। किसी को पता है कि यह संभव है या नहीं?फ़ाइल को सीधे मेमोरी

+1

हां; बस धाराओं का उपयोग करें। – SLaks

+0

ठीक है, तो मैं फ़ाइल को एफटीपी वेब एड्रेस लिंक से सीधे स्ट्रीम स्ट्रीम में लोड कर सकता हूं? या मुझे फ़ाइल को उपयोगकर्ता की मशीन पर पहले डाउनलोड करने की आवश्यकता होगी? यदि संभव हो तो मैं पूर्व को प्राथमिकता दूंगा। – daved

उत्तर

24

हां, आप एफ़टीपी से मेमोरी में एक फ़ाइल डाउनलोड कर सकते हैं।

मुझे लगता है कि आप FarPoint द्वारा संसाधित होने के लिए एफ़टीपी सर्वर से भी स्ट्रीम पास कर सकते हैं।

WebRequest request = FtpWebRequest.Create("ftp://asd.com/file"); 

using (WebResponse response = request.GetResponse()) 
{ 
    Stream responseStream = response.GetResponseStream(); 
    OpenExcel(responseStream); 
} 

वेब क्लाइंट का उपयोग करके आप लगभग वही कर सकते हैं। आम तौर पर वेब क्लाइंट का उपयोग करना आसान है लेकिन आपको कम कॉन्फ़िगरेशन विकल्प और नियंत्रण देता है (उदाहरण: कोई टाइमआउट सेटिंग नहीं)।

WebClient wc = new WebClient(); 
using (MemoryStream stream = new MemoryStream(wc.DownloadData("ftp://asd.com/file"))) 
{ 
    OpenExcel(stream); 
} 
+0

क्या हम निश्चित हैं कि 'WebResponse.GetResponseStream' डेटा को अस्थायी फ़ाइल में नहीं डालता है और' फ़ाइलस्ट्रीम 'या कुछ समान लौटाता है? –

+0

जब तक आप स्ट्रीम को पढ़ना शुरू नहीं करते हैं तब तक यह कुछ भी डाउनलोड करना शुरू नहीं करता है। मुझे इस बारे में निश्चित है, क्योंकि यदि आप थोड़ी देर के लिए पढ़ना जारी नहीं रखते हैं तो सर्वर टाइमआउट पर जा रहे हैं। देखें: http://msdn.microsoft.com/en-us/library/system.net.webresponse.getresponsestream(v=vs.110).aspx –

+0

दोनों उत्तरों खूबसूरती से काम करते हैं! धन्यवाद! – daved

15

WebClient.DownloadData पर एक नज़र डालें। आपको फ़ाइल निर्देशिका को स्मृति में डाउनलोड करने में सक्षम होना चाहिए और इसे पहले फ़ाइल में नहीं लिखना चाहिए।

यह untested है, लेकिन कुछ की तरह:

var spreadSheetStream 
    = new MemoryStream(new WebClient().DownloadData(yourFilePath)); 

मैं कहना है या नहीं, धारा OpenExcel विधि के साथ सीधे इस्तेमाल किया जा सकता है, हालांकि FarPoint से परिचित नहीं हूँ,। Online examplesFileStream के साथ उपयोग की जाने वाली विधि दिखाएं, लेकिन मुझे लगता है कि किसी भी प्रकार का Stream स्वीकार किया जाएगा।

+1

यह मेरे लिए उपयोगी पाया गया। मैं किसी वेबसाइट से .zip फ़ाइल डाउनलोड करने का प्रयास कर रहा था लेकिन स्ट्रीम प्राप्त करने के लिए ओपनरेड (फ़ाइल) का उपयोग कर रहा था लेकिन "धारा तलाश ऑपरेशन का समर्थन नहीं करता" त्रुटियां प्राप्त करने के लिए नई वेब क्लाइंट() का उपयोग कर रहा था। डुनो क्यों यह काम किया लेकिन मैं इसकी सराहना करता हूं :) – tehAon

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