मुझे अजीब WebClient.UploadFileAsync() के व्यवहार के साथ कुछ मदद चाहिए। मैं एक दूरस्थ HTTP सर्वर (nginx) usind पोस्ट विधि में एक फ़ाइल अपलोड कर रहा हूँ। POST को एक PHP स्क्रिप्ट (जिसे पता संदर्भित करता है) को संसाधित किया जाता है।वेब क्लाइंट अपलोडफाइलएसिंक प्रगति रिपोर्टिंग में अजीब व्यवहार
मैं इस सरल कोड
public void uploadFile(string filePath)
{
webClient = new WebClient();
webClient.Credentials = new NetworkCredential(Constant.HTTPUsername,Constant.HTTPPassword);
webClient.Headers.Add("Test", TestKey);
webClient.UploadProgressChanged += webClient_UploadProgressChanged;
webClient.UploadFileCompleted += webClient_UploadFileCompleted;
try
{
webClient.UploadFileAsync(new Uri(Address), "POST", filePath);
}
catch (Exception error)
{
throw new CustomException(error.Message);
}
}
है और UploadProgressChanged में मैं बस दी ProgressPercentage के साथ एक प्रगति बार अद्यतन करें। पहला मुद्दा है कि प्रगति प्रतिशत की सूचना दी, के साथ किसी भी फ़ाइल आकार है:
[17.38.14] Progress: 0 Bytes Sent: 175/269264
[17.38.14] Progress: 1 Bytes Sent: 8367/269264
[17.38.14] Progress: 3 Bytes Sent: 16559/269264
[17.38.14] Progress: 4 Bytes Sent: 24751/269264
[17.38.14] Progress: 6 Bytes Sent: 32943/269264
[17.38.14] Progress: 7 Bytes Sent: 41135/269264
[17.38.14] Progress: 9 Bytes Sent: 49327/269264
[17.38.14] Progress: 10 Bytes Sent: 57519/269264
[17.38.14] Progress: 12 Bytes Sent: 65711/269264
[17.38.14] Progress: 13 Bytes Sent: 73903/269264
[17.38.14] Progress: 15 Bytes Sent: 82095/269264
[17.38.14] Progress: 16 Bytes Sent: 90287/269264
[17.38.14] Progress: 18 Bytes Sent: 98479/269264
[17.38.15] Progress: 19 Bytes Sent: 106671/269264
[17.38.15] Progress: 21 Bytes Sent: 114863/269264
[17.38.15] Progress: 22 Bytes Sent: 123055/269264
[17.38.15] Progress: 24 Bytes Sent: 131247/269264
[17.38.15] Progress: 25 Bytes Sent: 139439/269264
[17.38.15] Progress: 27 Bytes Sent: 147631/269264
[17.38.16] Progress: 28 Bytes Sent: 155823/269264
[17.38.16] Progress: 30 Bytes Sent: 164015/269264
[17.38.16] Progress: 31 Bytes Sent: 172207/269264
[17.38.16] Progress: 33 Bytes Sent: 180399/269264
[17.38.16] Progress: 35 Bytes Sent: 188591/269264
[17.38.16] Progress: 36 Bytes Sent: 196783/269264
[17.38.17] Progress: 38 Bytes Sent: 204975/269264
[17.38.17] Progress: 39 Bytes Sent: 213167/269264
[17.38.17] Progress: 41 Bytes Sent: 221359/269264
[17.38.17] Progress: 42 Bytes Sent: 229551/269264
[17.38.17] Progress: 44 Bytes Sent: 237743/269264
[17.38.17] Progress: 45 Bytes Sent: 245935/269264
[17.38.17] Progress: 47 Bytes Sent: 254127/269264
[17.38.18] Progress: 48 Bytes Sent: 262319/269264
[17.38.18] Progress: 49 Bytes Sent: 269220/269264
[17.38.18] Progress: 50 Bytes Sent: 269264/269264
[17.38.25] Progress: -50 Bytes Sent: 269264/269264
[17.38.25] Progress: 100 Bytes Sent: 269264/269264
[17.38.25] FileCompleted event raised!
तो, वेब पर खोज, मैं पाया है कि 50> 100 से कूद, में सिर्फ एक डिजाइन पसंद है प्रतिशत रिपोर्ट .. और इसलिए मैं इसके साथ ठीक हूं। अजीब मुद्दा यह है कि 50% (जब पूरी फ़ाइल भेजी गई थी) पर भी, नेटवर्क इंटरफेस अभी भी यातायात उत्पन्न करता है और अभी भी अपलोड हो रहा है। वास्तव में, जैसा कि आप ऊपर दिए गए लॉग में समय से देख सकते हैं, अपलोड फ़ाइल को खोलने के लिए 7 सेकंड लगते हैं, अपलोडफाइल कॉम्प्लेटेडएवेंट.इन तथ्य को बढ़ाने के लिए, इस बीच, मैं अभी भी HTTP पर फ़ाइल भेज रहा हूं।
यहां मुद्दा यह है कि मैं अपने यूआई को विश्वसनीय रूप से अपडेट नहीं कर सकता: प्रगति पट्टी 50% तक बढ़ेगी लेकिन फिर यह अपलोड पूर्णता के लिए इंतजार कर रही है (और यह एक बुरा व्यवहार है, बड़ी फाइल के साथ, इस बार बढ़ता है काफी)।
सवाल यह है: मैं उपयोगकर्ता को फ़ाइल अपलोड प्रगति के बारे में अद्यतन कैसे रख सकता हूं?
धन्यवाद।
पीएस विधि पूरी तरह से ठीक काम करती है और फ़ाइल दूरस्थ सर्वर पर सही ढंग से अपलोड की जाती है। प्रगति रिपोर्टिंग के साथ एकमात्र मुद्दा है।
यदि सब कुछ ठीक है तो अपना समाधान उत्तर के रूप में पोस्ट करें और इसे स्वीकार करें। –
कभी-कभी यहां प्रश्न पोस्ट करने से आप इसे समझने में भी मदद करते हैं :) –