c# - Downloading files. Network problems causes corrupt files -


मेरा एप्लिकेशन HttpWebRequest - & gt; वेबरेशन्स - & gt; स्ट्रीम - & gt; FileStream । नीचे दिए गए कोड देखें।

परिदृश्य के बाद हम हमेशा भ्रष्ट फ़ाइलें प्राप्त करते हैं:

  1. डाउनलोड शुरू करें।
  2. अनप्लग केबल या डाउनलोड प्रक्रिया को रोकने के लिए क्लिक करें
  3. एप्लिकेशन को बंद करें और खोलें।
  4. डाउनलोड प्रारंभ करें (यह रुकावट बिंदु से शुरू होता है)।
  5. पूर्ण फ़ाइल प्रतीक्षा करें डाउनलोड किया गया है।

समस्या: डाउनलोड की गई फ़ाइल दूषित हो गई है।

मुझे यकीन है कि यह आम समस्या है, लेकिन मैं इसे Googling या SOing में विफल रहा। कृपया सलाह दें। कारण क्या हो सकता है?

  सार्वजनिक वर्ग डाउनलोडर {int StartPosition {get; सेट; } Int endposition {get; सेट; } Bool रद्द करना {get; सेट; } शून्य डाउनलोड (स्ट्रिंग [] args) {string uri = @ "http://www.example.com/hugefile.zip"; String localFile = @ "c: \ hugefile.zip"; HttpWebRequest अनुरोध = (HttpWebRequest) WebRequest.Create (यूरी); request.AddRange (this.StartPosition); WebResponse प्रतिक्रिया = अनुरोध। GetResponse (); स्ट्रीम स्ट्रीम स्ट्रीम = प्रतिसाद। गेटरेस्पॉन्सस्ट्रीम (); (फाइलस्ट्रीम फ़ाइलस्ट्रीम = नया फ़ाइलस्ट्रीम (स्थानीयफ़ाइल, फ़ाइलमोड। खोलें, FileAccess.Write)) का उपयोग कर {int buffSize = 8192; बाइट [] बफर = नया बाइट [बफसिज़]; Int readSize; करना {// इनपुट स्ट्रीम से बफर पढ़ता है आकार = इनपुटस्ट्रीम। रीड (बफर, 0, ब्रेफ सिज़); Filestream.position = this.StartPosition; FileStream.Write (बफर, 0, (int) readSize); fileStream.Flush (); // इस शुरू की स्थिति में वृद्धि। StartPosition + = पठन करें; // जांचें कि क्या स्ट्रीम अपने समापन पर पहुंच गया है यदि (यह.एन्दपोषण & gt; 0 & amp; amp; amp; amp; amp; & amp; amp; this.StartPosition & gt; = this.EndPosition) {this.StartPosition = this.EndPosition; टूटना; } // जांचें कि क्या उपयोगकर्ता ने डाउनलोड को रोकने के लिए अनुरोध किया है यदि (यह.कैंकेलिंग) {ब्रेक; }} जबकि (readSize & gt; 0); }}}}  

इसका निवारण करने के लिए मैं यह तय करने की तुलना में एक फाइल करने का सुझाव दे सकता हूँ मतभेद हैं क्या डाउनलोड किया हुआ एक अनुभाग भाग रहा है? क्या इसका डुप्लिकेट वाला अनुभाग है या उसके पास एक गलत अनुभाग है?


Comments