2012-02-19 15 views
19

मैं इस कोड का उपयोग एक अपलोड की गई छवि बचत कर रहा हूँ:स्ट्रीम। कॉपी करें - फ़ाइल खाली करें। asp.net

using (var fileStream = File.Create(savePath)) 
{ 
    stream.CopyTo(fileStream); 
} 

छवि उसके गंतव्य फ़ोल्डर में सहेजा जाता है, यह खाली, 0 केबी है। यहां क्या गलत हो सकता है? मैंने स्ट्रीम की जांच की है। कॉपी करने से पहले लम्बाई और यह खाली नहीं है।

+2

क्या हम आपका कोड देख सकते हैं जहां आप मूल स्ट्रीम लोड करते हैं? साथ ही, लाइन स्ट्रीम डालने का प्रयास करें। सेक (0, SeekOrigin.Begin); यह सुनिश्चित करने के लिए कि आप मूल स्ट्रीम की शुरुआत में हैं, अपनी प्रतिलिपि से पहले। – dash

उत्तर

52

आपके कोड में कुछ भी गलत नहीं है। तथ्य यह है कि "मैंने स्ट्रीम की जांच की है। कॉपी करने से पहले लम्बाई और यह खाली नहीं है" मुझे कॉपी करने से पहले स्ट्रीम स्थिति के बारे में आश्चर्यचकित करता है।

यदि आप पहले से ही स्रोत स्ट्रीम का उपभोग कर चुके हैं तो स्ट्रीम शून्य की लंबाई नहीं है, इसकी स्थिति स्ट्रीम के अंत में हो सकती है - इसलिए कॉपी करने के लिए कुछ भी नहीं बचा है।

तो धारा seekable है (जो इसे एक MemoryStream या एक FileStream और कई अन्य लोगों के लिए हो जाएगा), बस कॉपी से पहले

stream.Position = 0 

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

+2

+1 - यह आश्चर्यचकित नहीं होगा अगर यह नहीं था :-) – dash

+2

आप रोज़ाना कुछ नया सीखते हैं! वास्तव में यह था। बहुत धन्यवाद! :) – user1121487

+0

उस संकेत के लिए +1 !!! –

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