Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public string[] GetFileList()
- {
- string[] downloadFiles;
- StringBuilder result = new StringBuilder();
- WebResponse response = null;
- StreamReader reader = null;
- try
- {
- FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
- request.UseBinary = true;
- request.Method = WebRequestMethods.Ftp.ListDirectory;
- request.Credentials = new NetworkCredential(ftpUserName, ftpPassWord);
- request.KeepAlive = false;
- request.UsePassive = false;
- response = request.GetResponse();
- reader = new StreamReader(response.GetResponseStream());
- string line = reader.ReadLine();
- while (line != null)
- {
- result.Append(line);
- result.Append("n");
- line = reader.ReadLine();
- }
- result.Remove(result.ToString().LastIndexOf('n'), 1);
- return result.ToString().Split('n');
- }
- catch (Exception ex)
- {
- if (reader != null)
- {
- reader.Close();
- }
- if (response != null)
- {
- response.Close();
- }
- downloadFiles = null;
- return downloadFiles;
- }
- }
- private void Download(string file)
- {
- try
- {
- string uri = url + "/" + file;
- Uri serverUri = new Uri(uri);
- if (serverUri.Scheme != Uri.UriSchemeFtp)
- {
- return;
- }
- FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url + "/" + file);
- request.UseBinary = true;
- request.Method = WebRequestMethods.Ftp.DownloadFile;
- request.Credentials = new NetworkCredential(ftpUserName, ftpPassWord);
- request.KeepAlive = false;
- request.UsePassive = false;
- FtpWebResponse response = (FtpWebResponse)request.GetResponse();
- Stream responseStream = response.GetResponseStream();
- FileStream writeStream = new FileStream(localDestnDir + "\" + file, FileMode.Create);
- int Length = 2048;
- Byte[] buffer = new Byte[Length];
- int bytesRead = responseStream.Read(buffer, 0, Length);
- while (bytesRead > 0)
- {
- writeStream.Write(buffer, 0, bytesRead);
- bytesRead = responseStream.Read(buffer, 0, Length);
- }
- writeStream.Close();
- response.Close();
- }
- catch (WebException wEx)
- {
- MessageBox.Show(wEx.Message, "Download Error");
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message, "Download Error");
- }
- }
- void DownloadFtpDirectory(string url, NetworkCredential credentials, string localPath)
- {
- FtpWebRequest listRequest = (FtpWebRequest)WebRequest.Create(url);
- listRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
- listRequest.Credentials = credentials;
- List<string> lines = new List<string>();
- using (FtpWebResponse listResponse = (FtpWebResponse)listRequest.GetResponse())
- using (Stream listStream = listResponse.GetResponseStream())
- using (StreamReader listReader = new StreamReader(listStream))
- {
- while (!listReader.EndOfStream)
- {
- lines.Add(listReader.ReadLine());
- }
- }
- foreach (string line in lines)
- {
- string[] tokens =
- line.Split(new[] { ' ' }, 9, StringSplitOptions.RemoveEmptyEntries);
- string name = tokens[8];
- string permissions = tokens[0];
- string localFilePath = Path.Combine(localPath, name);
- string fileUrl = url + name;
- if (permissions[0] == 'd')
- {
- if (!Directory.Exists(localFilePath))
- {
- Directory.CreateDirectory(localFilePath);
- }
- DownloadFtpDirectory(fileUrl + "/", credentials, localFilePath);
- }
- else
- {
- FtpWebRequest downloadRequest = (FtpWebRequest)WebRequest.Create(fileUrl);
- downloadRequest.Method = WebRequestMethods.Ftp.DownloadFile;
- downloadRequest.Credentials = credentials;
- using (FtpWebResponse downloadResponse =
- (FtpWebResponse)downloadRequest.GetResponse())
- using (Stream sourceStream = downloadResponse.GetResponseStream())
- using (Stream targetStream = File.Create(localFilePath))
- {
- byte[] buffer = new byte[10240];
- int read;
- while ((read = sourceStream.Read(buffer, 0, buffer.Length)) > 0)
- {
- targetStream.Write(buffer, 0, read);
- }
- }
- }
- }
- }
- NetworkCredential credentials = new NetworkCredential("user", "mypassword");
- string url = "ftp://ftp.example.com/directory/to/download/";
- DownloadFtpDirectory(url, credentials, @"C:targetdirectory");
- // Setup session options
- SessionOptions sessionOptions = new SessionOptions
- {
- Protocol = Protocol.Ftp,
- HostName = "ftp.example.com",
- UserName = "user",
- Password = "mypassword",
- };
- using (Session session = new Session())
- {
- // Connect
- session.Open(sessionOptions);
- // Download files
- session.GetFiles("/directory/to/download/*", @"C:targetdirectory*").Check();
- }
Add Comment
Please, Sign In to add comment