Загрузка файла на FTP

  1. // Закачка файла на FTP-сервер
  2. private void FTPUploadFile(string filename)
  3. {
  4.     FileInfo fileInfo = new FileInfo(filename);
  5.  
  6.     // Создаем объект FtpWebRequest, используя заданный адрес
  7.     FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(
  8.             new Uri("ftp://" + "ftp.narod.ru" + "/" + fileInfo.Name)
  9.         );
  10.  
  11.     // Авторизация по логину и паролю
  12.     reqFTP.Credentials = new NetworkCredential("login", "pass");
  13.  
  14.     // По умолчанию свойство KeepAlive равно true,
  15.     // если соединение не обрывается после выполнения команды
  16.     reqFTP.KeepAlive = false;
  17.  
  18.     // Задаем нужную команду (ключевой момент)
  19.     reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
  20.  
  21.     // Указываем тип данных при передаче файлов
  22.     reqFTP.UseBinary = true;
  23.  
  24.     // Сообщаем серверу о размере закачиваемого файла
  25.     reqFTP.ContentLength = fileInfo.Length;
  26.  
  27.     // Устанавливаем размер буфера в 2 Кбайт
  28.     int buffLength = 2048;
  29.     byte[] buff = new byte[buffLength];
  30.     int contentLen;
  31.  
  32.     // Открываем файловый поток (System.10.FileStream) для чтения
  33.     FileStream fs = fileInfo.OpenRead();
  34.     try
  35.     {
  36.         // Поток, в который записывается закачиваемый на сервер файл
  37.         Stream strm = reqFTP.GetRequestStream();
  38.         // Читаем из файлового потока по 2 Кбайт за раз
  39.         contentLen = fs.Read(buff, 0, buffLength);
  40.         // Пока файл не закончился
  41.         while (contentLen != 0)
  42.         {
  43.             // Запишем прочитанное в поток закачки
  44.             strm.Write(buff, 0, contentLen);
  45.             contentLen = fs.Read(buff, 0, buffLength);
  46.         }
  47.         // Закрываем файловый поток и поток запроса
  48.         strm.Close();
  49.         fs.Close();
  50.     }
  51.     catch (Exception ex)
  52.     {
  53.         //MessageBox.Show(ex.Message, "Ошибка при закачке файла");
  54.     }
  55. }
Пользуемся так:
  1. FTPUploadFile(@"c:\ruspro.gif");
Подробнее о FtpWebRequest.

:ps: Да простит меня aNNiMON за копипаст :anm:

  • +2
  • views 2441
  • XakepPRO XakepPRO
  • comments 0

Реклама

Мы в соцсетях

tw tg yt gt