2009-06-11 7 views
13

का उपयोग कर फ़ाइल अपलोड के दौरान अपलोड प्रगति प्राप्त करना मेरे पास एक ऐप है जो वेब क्लाइंट का उपयोग कर सर्वर पर फ़ाइलों को अपलोड करता है। फ़ाइल अपलोड प्रगति पर है, जबकि मैं एक प्रगति पट्टी प्रदर्शित करना चाहता हूं। मैं इसे प्राप्त करने के बारे में कैसे जाउंगा?Webclient.Uploadfile

उत्तर

18

WebClient.UploadFileAsync आपको ऐसा करने की अनुमति देगा।

WebClient webClient = new WebClient(); 
webClient.UploadFileAsync(address, fileName); 
webClient.UploadProgressChanged += WebClientUploadProgressChanged; 

...

void WebClientUploadProgressChanged(object sender, UploadProgressChangedEventArgs e) 
{ 
     Console.WriteLine("Upload {0}% complete. ", e.ProgressPercentage); 
} 

ध्यान दें कि धागा अपलोड पर अब ब्लॉक नहीं है, इसलिए मैं का उपयोग कर की सलाह देते हैं:

webClient.UploadFileCompleted += WebClientUploadCompleted; 

...

void WebClientUploadCompleted(object sender, UploadFileCompletedEventArgs e) 
{ 
    // The upload is finished, clean up 
} 
+0

धन्यवाद। मैं multithreading के साथ काम कर रहा हूँ, फ़ाइल अपलोड पहले से ही एक अलग धागे पर चल रहा है। तो क्या मुझे केवल अपलोडफाइल विधि या अपलोडफाइलएसिंक विधि का उपयोग करना चाहिए? –

+0

आपको अभी भी अपलोड करने की आवश्यकता होगी FileAsync मुझे डर है, थ्रेड अपलोडफाइल पर कॉल पर अवरुद्ध होगा ताकि उन घटनाओं को कभी भी बुलाया न जाए। जब आप अपलोड शुरू करते हैं तो आप बूल फ्लैग सेट करके अपनी खुद की अवरोध को फिर से बना सकते हैं, इसे अपलोड अपूर्ण में रीसेट कर सकते हैं, फिर थ्रेड स्लीप को साफ़ होने तक थ्रेड। –

+0

नोट: '' अपलोड प्रोग्रेस चेंज किया गया '' '' '' '_DDDADync''' विधि के साथ अच्छी तरह से काम नहीं करता है –

2

अपना ईवेंट हैंडलर WebClient.UploadProgressChanged में जोड़ें और WebClient.UploadFileAsync पर कॉल करें।

उदाहरण के लिए WebClient.UploadProgressChanged दस्तावेज़ीकरण देखें।