Вероятно многие сталкивались с необходимостью работы с FTP сервером из своего приложения. Меня тоже однажды постигла такая участь, поэтому сейчас мы решим достаточно простую задачу - отправить файл на FTP сервер.
Не забываем включить следующие пространства имен:
using System.Net; using System.IO;
Для реализации работы с FTP выполним следующие шаги:
- Создаем объект FtpWebRequest. Класс FtpWebRequest предоставляет возможность взаимодействовать с FTP-серверами.
- Определяем метод, по которому будет работать наш FTP клиент - в нашем случае это буде UploadFile - выгрузка файла на сервер. Тут можно посмотреть какие еще есть методы.
- Задать данные для авторизации на сервер (логин и пароль).
- Указать тип данных для передачи.
- Прочитать и отправить файл.
public void Upload(string filename, string ftpServerIP) { FileInfo filePath = new FileInfo(filename); string uri = "ftp://" + ftpServerIP + "/" + filePath.Name; FtpWebRequest reqFTP; // Создаем FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create (new Uri(uri)); reqFTP.Proxy = null; // БЕЗ Прокси // Задаем учетные данные для доступа к FTP string ftpPassword = "anonymous"; string ftpUserID = "anonymous"; reqFTP.Credentials = new NetworkCredential(ftpUserID,ftpPassword); // Возвращает или задает значение Boolean, которое указывает, следует ли закрывать //управляющее подключение к FTP-серверу после завершения запроса. reqFTP.KeepAlive = false; // Задаем команду, которая будет отправлена на сервер reqFTP.Method = WebRequestMethods.Ftp.UploadFile; // Указывает тип данных для передачи файлов. reqFTP.UseBinary = true; // Notify the server about the size of the uploaded file reqFTP.ContentLength = filePath.Length; // The buffer size is set to 2kb int buffLength = 2048; byte[] buff = new byte[buffLength]; int contentLen; // Открываем filestream (System.IO.FileStream) для чтения отправляемого файла FileStream fs = filePath.OpenRead(); try { // Получает поток, используемый для выгрузки данных на FTP-сервер Stream strm = reqFTP.GetRequestStream(); // Read from the file stream 2kb at a time contentLen = fs.Read(buff, 0, buffLength); // Till Stream content ends while (contentLen != 0) { // Write Content from the file stream to the FTP Upload // Stream strm.Write(buff, 0, contentLen); contentLen = fs.Read(buff, 0, buffLength); } strm.Close(); } catch (Exception ex) { fs.Close(); } fs.Close(); }
Комментариев нет:
Отправить комментарий