/// <summary> /// Выгружает заданный файл на FTP сервер /// </summary> /// <param name="file">Файл подлежащий выгрузке на сервер</param> /// <param name="destDirectory">Удаленный каталог, в который будет выгружен файл. Путь указывается относительно корневого каталога</param> public void UploadFile(string file, string destDirectory) { Uri host = new Uri(Host); Uri uri = new Uri(host, RootDirectory); WebRequest request = WebRequest.Create(new Uri(uri, destDirectory)); request.Method = WebRequestMethods.Ftp.UploadFile; request.Credentials = Credentials; request.Timeout = System.Threading.Timeout.Infinite; byte[] data = File.ReadAllBytes(file); using (Stream stream = request.GetRequestStream()) { stream.Write(data, 0, data.Length); } using (FtpWebResponse resp = (FtpWebResponse)request.GetResponse()) { if (resp.StatusCode != FtpStatusCode.ClosingData) { string message = string.Format("Ошибка при выгрузке файла на FTP\nХост: {0}\nФайл: {1}\nКод состояния: {2}\nТекст состояния: {3}", host.Host, file, resp.StatusCode, resp.StatusDescription); throw new Exception(message); } } DebugHelper.ConsoleWriteLine("Файл " + file + " выгружен на сервер " + host.Host, DebugHelper.DebugLevels.Information); }
/// <summary> /// Удаляет заданный файл на FTP сервере /// </summary> /// <param name="file">Удаленный файл. Путь указывается относительно корневого каталога</param> public void DeleteFile(string file) { Uri host = new Uri(Host); Uri uri = new Uri(host, RootDirectory); WebRequest request = WebRequest.Create(new Uri(uri, file)); request.Method = WebRequestMethods.Ftp.DeleteFile; request.Credentials = Credentials; using (FtpWebResponse resp = (FtpWebResponse)request.GetResponse()) { if (resp.StatusCode != FtpStatusCode.FileActionOK) { string message = string.Format("Ошибка при удалении файла на FTP\nХост: {0}\nФайл: {1}\nКод состояния: {2}\nТекст состояния: {3}", host.Host, file, resp.StatusCode, resp.StatusDescription); DebugHelper.ConsoleWriteLine(message, DebugHelper.DebugLevels.Error); throw new Exception(message); } DebugHelper.ConsoleWriteLine("Файл " + file + " успешно удален", DebugHelper.DebugLevels.Information); } }