Создание новой папки на 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д