मैं एक प्रगति पट्टी के साथ एक FTP सर्वर से एक फ़ाइल डाउनलोड करने की कोशिश कर रहा हूँ।प्रगति के साथ एफ़टीपी से फ़ाइल डाउनलोड करें - टोटलबाइट्स ट्राइसेव हमेशा -1 है?
फ़ाइल डाउनलोड हो रही है, और प्रोग्रेस चेंज इवेंट कॉल कर रहा है, घटना के अलावा कुलबेट्स टॉरेसीव हमेशा -1 है। कुल बाइट बढ़ता है, लेकिन मैं कुल के बिना प्रतिशत की गणना करने में असमर्थ हूं।
मुझे लगता है कि मैं अन्य ftp कमांड के माध्यम से फ़ाइल का आकार पा सकता हूं, लेकिन मुझे आश्चर्य है कि यह क्यों काम नहीं करता है?
मेरे कोड:
FTPClient request = new FTPClient();
request.Credentials = credentials;
request.DownloadProgressChanged += new DownloadProgressChangedEventHandler(request_DownloadProgressChanged);
//request.DownloadDataCompleted += new DownloadDataCompletedEventHandler(request_DownloadDataCompleted);
request.DownloadDataAsync(new Uri(folder + file));
while (request.IsBusy) ;
....
static void request_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
if (e.TotalBytesToReceive == -1)
{
l.reportProgress(-1, FormatBytes(e.BytesReceived) + " out of ?");
}
else
{
l.reportProgress(e.ProgressPercentage, "Downloaded " + FormatBytes(e.BytesReceived) + " out of " + FormatBytes(e.TotalBytesToReceive) + " (" + e.ProgressPercentage + "%)");
}
}
....
class FTPClient : WebClient
{
protected override WebRequest GetWebRequest(System.Uri address)
{
FtpWebRequest req = (FtpWebRequest)base.GetWebRequest(address);
req.UsePassive = false;
return req;
}
}
धन्यवाद।
आप बेहतर कार्यान्वयन प्रदान करना होगा इसे संभालने के लिए 'वेब क्लाइंट'। ओवरराइड करने के लिए दिलचस्प गुण/विधियों की तलाश करें। – leppie
'वेब क्लाइंट' पर एक नज़र डाली, लेकिन यह बहुत सारे हैक्स के बिना लागू करने के लिए असंभव लगता है। – leppie