Как реализовать функцию загрузки всех файлов из 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;
// исключение при ошибке?
}
Комментариев нет:
Отправить комментарий