Below is the download function for ftp download
public static void Download(string FTPFullFileName, string DestFullFileName, string UserName, string Password)
{
try
{
DestFullFileName = DestFullFileName.Replace("/", "\\");
int indexPart = DestFullFileName.LastIndexOf("\\");
if (indexPart != -1)
{
String DestFolder = DestFullFileName.Substring(0, indexPart + 1);
if (!Directory.Exists(DestFolder))
Directory.CreateDirectory(DestFolder);
}
FtpWebRequest FTP = (FtpWebRequest)FtpWebRequest.Create(FTPFullFileName);
FTP.Method = WebRequestMethods.Ftp.DownloadFile;
FTP.UseBinary = true;
FTP.Proxy = null;
FTP.Credentials = new NetworkCredential(UserName, Password);
FtpWebResponse Response = (FtpWebResponse)FTP.GetResponse();
Stream FtpStream = Response.GetResponseStream();
int BufferSize =Convert.ToInt32(FileSize(FTPFullFileName, UserName, Password)) ;
byte[] Buffer = new byte[BufferSize];
FileStream OutputStream = new FileStream(DestFullFileName, FileMode.Create);
int ReadCount = FtpStream.Read(Buffer, 0, BufferSize);
while (ReadCount > 0)
{
OutputStream.Write(Buffer, 0, ReadCount);
ReadCount = FtpStream.Read(Buffer, 0, BufferSize);
}
FtpStream.Close();
OutputStream.Close();
Response.Close();
}
catch (Exception ex)
{
}
}
Below is the function to calculate downloading file size
public static long FileSize(string FTPFullFileName, string UserName, string Password)
{
try
{
FtpWebRequest FTP = (FtpWebRequest)FtpWebRequest.Create(FTPFullFileName);
FTP.Method = WebRequestMethods.Ftp.GetFileSize;
FTP.UseBinary = true;
FTP.Credentials = new NetworkCredential(UserName, Password);
FtpWebResponse Response = (FtpWebResponse)FTP.GetResponse();
Stream FtpStream = Response.GetResponseStream();
long FileSize = Response.ContentLength;
FtpStream.Close();
Response.Close();
return FileSize;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
calling the download function like below
Download(@"ftp:\\192.xxx.xx.xx\inetpub\ftproot\RetailAgreement\abc.JPG", @"E:\c.jpg", ftpUserID, ftpPassword);