Загрузить/скачать файл по FTP протоколу - C#
Формулировка задачи:
Господа, будьте добры, необходим рабочий пример. Заранее всем большое спасибо! Не могу найти нормальный рабочий пример..
Решение задачи: «Загрузить/скачать файл по FTP протоколу»
textual
Листинг программы
- public static String[] FTPListTree(String FtpUri, String User, String Pass) {
- List<String> files = new List<String>();
- Queue<String> folders = new Queue<String>();
- folders.Enqueue(FtpUri);
- while (folders.Count > 0) {
- String fld = folders.Dequeue();
- List<String> newFiles = new List<String>();
- FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(fld);
- ftp.Credentials = new NetworkCredential(User, Pass);
- ftp.UsePassive = false;
- ftp.Method = WebRequestMethods.Ftp.ListDirectory;
- using (StreamReader resp = new StreamReader(ftp.GetResponse().GetResponseStream())) {
- String line = resp.ReadLine();
- while (line != null) {
- newFiles.Add(line.Trim());
- line = resp.ReadLine();
- }
- }
- ftp = (FtpWebRequest)FtpWebRequest.Create(fld);
- ftp.Credentials = new NetworkCredential(User, Pass);
- ftp.UsePassive = false;
- ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
- using (StreamReader resp = new StreamReader(ftp.GetResponse().GetResponseStream())) {
- String line = resp.ReadLine();
- while (line != null) {
- if (line.Trim().ToLower().StartsWith("d") || line.Contains(" <DIR> ")) {
- String dir = newFiles.First(x => line.EndsWith(x));
- newFiles.Remove(dir);
- folders.Enqueue(fld + dir + "/");
- }
- line = resp.ReadLine();
- }
- }
- files.AddRange(from f in newFiles select fld + f);
- }
- return files.ToArray();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д