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;
        }