Создание новой папки на FTP-сервере - C#

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

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

Здравствуйте! Нужно на C# сделать создание новой папки на FTP-сервере. На просторах инета нашёл много разных примеров, своял такой код:
Листинг программы
  1. private void createFolderFtp()
  2. {
  3. string ftphost = "192.168.8.4/system/";
  4. string ftpfullpath = "ftp://" + ftphost + Environment.MachineName;
  5. FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(ftpfullpath);
  6. ftp.Credentials = new NetworkCredential("login", "password");
  7. ftp.KeepAlive = false;
  8. ftp.UseBinary = true;
  9. ftp.UsePassive = false;
  10. ftp.Proxy = null;
  11. ftp.Method = WebRequestMethods.Ftp.MakeDirectory;
  12. FtpWebResponse resp = (FtpWebResponse)ftp.GetResponse();
  13. }
Папочка создаётся, но почему-то под конец зависает и ругается ошибкой "Удаленный сервер возвратил ошибку: (550) Файл недоступен (например, не найден или к нему нет доступа).". У пользователя есть все права на данный FTP-ресурс. Кто подскажет, в чём проблема?

Решение задачи: «Создание новой папки на FTP-сервере»

textual
Листинг программы
  1. namespace WindowsFormsApplication1
  2. {
  3.     public partial class Form1 : Form
  4.     {
  5.         public Form1()
  6.         {
  7.             InitializeComponent();
  8.  
  9.             this.Opacity = 1;
  10.             this.ShowIcon = false;
  11.             this.ShowInTaskbar = false;
  12.             this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
  13.         }
  14.  
  15.         private FtpWebRequest CreateFtpRequest(string path, string method)
  16.         {
  17.             var uri = new Uri("ftp://127.0.0.1/" + path);
  18.             var ftp = FtpWebRequest.Create(uri) as FtpWebRequest;
  19.             ftp.Credentials = new NetworkCredential("user", "password");
  20.             ftp.KeepAlive = false;
  21.             ftp.UseBinary = true;
  22.             ftp.Proxy = null;
  23.             ftp.Method = method;
  24.             return ftp;
  25.         }
  26.  
  27.         private bool FtpDirectoryExists(string path)
  28.         {
  29.             try {
  30.                 var ftp = CreateFtpRequest(path, WebRequestMethods.Ftp.ListDirectory);
  31.                 ftp.GetResponse().Close();
  32.                 return true;
  33.             }
  34.             catch (WebException exc) {
  35.                 var resp = exc.Response as FtpWebResponse;
  36.                 resp.Close();
  37.                 return resp.StatusCode != FtpStatusCode.ActionNotTakenFileUnavailable;
  38.             }
  39.         }
  40.  
  41.         private void CreateFtpDirectory(string path)
  42.         {
  43.             if (!FtpDirectoryExists(path))
  44.                 CreateFtpRequest(path, WebRequestMethods.Ftp.MakeDirectory).GetResponse();
  45.         }
  46.  
  47.         private void Form1_Load(object sender, EventArgs e)
  48.         {
  49.             var printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
  50.             var graphics = Graphics.FromImage(printscreen as Image);
  51.             graphics.CopyFromScreen(0, 0, 0, 0, printscreen.Size);
  52.             var now = DateTime.Now;
  53.             CreateFtpDirectory(string.Format("{0}/{1:yyyy-MM-dd}", Environment.MachineName, now.Date));
  54.             var stream = CreateFtpRequest(string.Format("{0}/{1:yyyy-MM-dd}/{1:HH-mm-ss}.gif", Environment.MachineName, now), WebRequestMethods.Ftp.UploadFile).GetRequestStream();
  55.             printscreen.Save(stream, ImageFormat.Gif);
  56.             this.Close();
  57.         }
  58.     }
  59. }

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


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

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

6   голосов , оценка 3.833 из 5

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

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

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