Загрузить/скачать файл по FTP протоколу - C#

Узнай цену своей работы

Формулировка задачи:

Господа, будьте добры, необходим рабочий пример. Заранее всем большое спасибо! Не могу найти нормальный рабочий пример..

Решение задачи: «Загрузить/скачать файл по FTP протоколу»

textual
Листинг программы
  1. public static String[] FTPListTree(String FtpUri, String User, String Pass) {
  2.  
  3.     List<String> files = new List<String>();
  4.     Queue<String> folders = new Queue<String>();
  5.     folders.Enqueue(FtpUri);
  6.  
  7.     while (folders.Count > 0) {
  8.         String fld = folders.Dequeue();
  9.         List<String> newFiles = new List<String>();
  10.  
  11.         FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(fld);
  12.         ftp.Credentials = new NetworkCredential(User, Pass);
  13.         ftp.UsePassive = false;
  14.         ftp.Method = WebRequestMethods.Ftp.ListDirectory;
  15.         using (StreamReader resp = new StreamReader(ftp.GetResponse().GetResponseStream())) {
  16.             String line = resp.ReadLine();
  17.             while (line != null) {
  18.                 newFiles.Add(line.Trim());
  19.                 line = resp.ReadLine();
  20.             }
  21.         }
  22.  
  23.         ftp = (FtpWebRequest)FtpWebRequest.Create(fld);
  24.         ftp.Credentials = new NetworkCredential(User, Pass);
  25.         ftp.UsePassive = false;
  26.         ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
  27.         using (StreamReader resp = new StreamReader(ftp.GetResponse().GetResponseStream())) {
  28.             String line = resp.ReadLine();
  29.             while (line != null) {
  30.                 if (line.Trim().ToLower().StartsWith("d") || line.Contains(" <DIR> ")) {
  31.                     String dir = newFiles.First(x => line.EndsWith(x));
  32.                     newFiles.Remove(dir);
  33.                     folders.Enqueue(fld + dir + "/");
  34.                 }
  35.                 line = resp.ReadLine();
  36.             }
  37.         }
  38.         files.AddRange(from f in newFiles select fld + f);
  39.     }
  40.     return files.ToArray();
  41. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут