Witam, skleiłem kod, który ściąga mi plik z FTP. Chciałbym dołożyć ile procent jest zrobione.
Dodałem metodę przeliczającą bajty na megabajty. Do osiągnięcia celu potrzebuję wiedzieć ile plik na FTP waży.
Aby ściągnąć plik użyłem
request.Method = WebRequestMethods.Ftp.DownloadFile;
gdzie mam użyć request.Method = WebRequestMethods.Ftp.GetFileSize ?
private void Download()
{
string ftpServerIP = "<ip address>";
string ftpUserID = "user";
string ftpPassword = "pass";
string uri = "ftp://" + ftpServerIP + "/" + "downloads/fileToDownload.zip";
int bytesRead = 0;
float MBCalc = 0;
byte[] buffer = new byte[2048];
FtpWebRequest request;
request = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
request.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.UsePassive = true;
Stream reader = request.GetResponse().GetResponseStream();
FileStream fileStream = new FileStream("C:\\Users\\user\\Desktop\\fileToDownload.zip", FileMode.Create);
while (true)
{
bytesRead = reader.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
fileStream.Write(buffer, 0, bytesRead);
MBCalc += bytesRead;
// instead of writing it to console change it to log file
// clear the log file every new Run
Console.Clear();
Console.Write(calculate_MB(MBCalc));
}
}
/*
* Calculate bytes to megabytes
*/
private float calculate_MB(float bytesNumber)
{
float MBytes = 0;
MBytes = bytesNumber / 1024 / 1024;
return MBytes;
}