Создание новой папки на 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();
}
}
}