string host = @"ftphost";
string username = "user";
string password = "********";
string localFileName = System.IO.Path.GetFileName(@"localfilename");
string remoteDirectory = "/export/";
using (var sftp = new SftpClient(host, username, password))
{
sftp.Connect();
var files = sftp.ListDirectory(remoteDirectory);
foreach (var file in files)
{
if (!file.Name.StartsWith("."))
{
string remoteFileName = file.Name;
if (file.LastWriteTime.Date == DateTime.Today)
Console.WriteLine(file.FullName);
File.OpenWrite(localFileName);
string sDir = @"localpath";
Stream file1 = File.OpenRead(remoteDirectory + file.Name);
sftp.DownloadFile(remoteDirectory, file1);
}
}
}
Я использую библиотеку SSH.NET(Renci.SshNet
) для работы с SFTP-сервером. Что мне нужно сделать, так это захватить файлы из определенной папки на SFTP-сервере на основе сегодняшней даты. Затем скопируйте эти файлы с сервера SFTP на локальный диск на моем сервере.
Выше код, который у меня есть, но он не работает. Иногда он говорит, что файл не существует, но иногда файлы, которые я буду загружать, не будут на моих локальных серверах, но мне нужно загрузить все файлы, которые были загружены в удаленную папку на этот день.
Может кто-нибудь взглянуть и посмотреть, что не так? Я считаю, что это как-то связано с частью потока. Я работал с FTP гораздо больше, помимо загрузки файлов, которые я взял с некоторым предыдущим кодом, и думал, что могу изменить процесс, но это не работает. Используемый мной код основан на этом примере.