Загрузка файла на FTP
- // Закачка файла на FTP-сервер
- private void FTPUploadFile(string filename)
- {
- FileInfo fileInfo = new FileInfo(filename);
- // Создаем объект FtpWebRequest, используя заданный адрес
- FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(
- new Uri("ftp://" + "ftp.narod.ru" + "/" + fileInfo.Name)
- );
- // Авторизация по логину и паролю
- reqFTP.Credentials = new NetworkCredential("login", "pass");
- // По умолчанию свойство KeepAlive равно true,
- // если соединение не обрывается после выполнения команды
- reqFTP.KeepAlive = false;
- // Задаем нужную команду (ключевой момент)
- reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
- // Указываем тип данных при передаче файлов
- reqFTP.UseBinary = true;
- // Сообщаем серверу о размере закачиваемого файла
- reqFTP.ContentLength = fileInfo.Length;
- // Устанавливаем размер буфера в 2 Кбайт
- int buffLength = 2048;
- byte[] buff = new byte[buffLength];
- int contentLen;
- // Открываем файловый поток (System.10.FileStream) для чтения
- FileStream fs = fileInfo.OpenRead();
- try
- {
- // Поток, в который записывается закачиваемый на сервер файл
- Stream strm = reqFTP.GetRequestStream();
- // Читаем из файлового потока по 2 Кбайт за раз
- contentLen = fs.Read(buff, 0, buffLength);
- // Пока файл не закончился
- while (contentLen != 0)
- {
- // Запишем прочитанное в поток закачки
- strm.Write(buff, 0, contentLen);
- contentLen = fs.Read(buff, 0, buffLength);
- }
- // Закрываем файловый поток и поток запроса
- strm.Close();
- fs.Close();
- }
- catch (Exception ex)
- {
- //MessageBox.Show(ex.Message, "Ошибка при закачке файла");
- }
- }
Пользуемся так:Подробнее о FtpWebRequest.
Да простит меня aNNiMON за копипаст
- FTPUploadFile(@"c:\ruspro.gif");
Да простит меня aNNiMON за копипаст