Создание новой папки на FTP-сервере - C#
Формулировка задачи:
Здравствуйте!
Нужно на C# сделать создание новой папки на FTP-сервере. На просторах инета нашёл много разных примеров, своял такой код:
Папочка создаётся, но почему-то под конец зависает и ругается ошибкой "Удаленный сервер возвратил ошибку: (550) Файл недоступен (например, не найден или к нему нет доступа).". У пользователя есть все права на данный 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(); }
Решение задачи: «Создание новой папки на 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д