Страницы

Поиск по вопросам

пятница, 12 июля 2019 г.

C# ftp загрузка файлов из директории

Как реализовать функцию загрузки всех файлов из X директории в Y директорию на ftp.
Я добился, что отправляется один файл. Но есть две проблемы:
1 В директорие очень много файлов под директорий.
2 Если файл уже есть с таким именем, надо затирать новым файлом.
requestFTPUploader = (FtpWebRequest)WebRequest.Create("ftp://127.0.0.1/Destination/" + fileName); requestFTPUploader.Credentials = new NetworkCredential("user", "pass"); requestFTPUploader.Method = WebRequestMethods.Ftp.UploadFile;
FileInfo fileInfo = new FileInfo(filepath); FileStream fileStream = fileInfo.OpenRead();
int bufferLength = 2048; byte[] buffer = new byte[bufferLength];
try { Stream uploadStream = requestFTPUploader.GetRequestStream(); int contentLength = fileStream.Read(buffer, 0, bufferLength);
while (contentLength != 0) { uploadStream.Write(buffer, 0, contentLength); contentLength = fileStream.Read(buffer, 0, bufferLength); }
uploadStream.Close(); fileStream.Close(); } catch (Exception exception) { Console.WriteLine(exception.Message.ToString()); }
Console.WriteLine(fileName + "Uploaded");
Т.е. нужна функция со входящими параметрами: user, pass, sourceDir, destinationDir. А на выходе скопированные/замещённые файлы на сервер по протоколу ftp.


Ответ

Очень много файлов? Ну хорошо, значит, будет долго копироваться. Это ведь не проблема? Используйте WebRequestMethods.Ftp.DeleteFile
var requestFtpDeleter = (FtpWebRequest)WebRequest.Create( "ftp://127.0.0.1/Destination/" + fileName); requestFtpDeleter.Credentials = new NetworkCredential("user", "pass"); requestFtpDeleter.Method = WebRequestMethods.Ftp.DeleteFile; using (var response = (FtpWebResponse)requestFtpDeleter.GetResponse()) { bool isSuccessful = response.StatusCode >= 200 && response.StatusCode < 300; // исключение при ошибке? }

Комментариев нет:

Отправить комментарий