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);
}
}
}
Tôi đang sử dụng thư viện SSH.NET (Renci.SshNet
) để làm việc với máy chủ SFTP. Những gì tôi cần làm là lấy các tập tin từ một thư mục cụ thể trên máy chủ SFTP dựa trên ngày hôm nay. Sau đó sao chép các tệp đó từ máy chủ SFTP sang ổ đĩa cục bộ máy chủ của tôi.Tải xuống tệp từ SFTP có thư viện SSH.NET
Trên đây là mã tôi có nhưng nó không hoạt động. Đôi khi nó nói tập tin không tồn tại nhưng đôi khi các tập tin tôi sẽ được tải về sẽ không được trên các máy chủ địa phương của tôi nhưng tôi cần phải tải về bất cứ tập tin được tải lên thư mục từ xa cho ngày hôm đó.
Ai đó có thể xem và xem có gì sai không? Tôi tin rằng nó có cái gì đó để làm với phần dòng. Tôi đã làm việc với FTP nhiều bên cạnh việc tải lên các tập tin mà tôi đã lấy một số mã trước đó tôi đã có và nghĩ rằng tôi có thể đảo ngược quá trình nhưng điều đó không hoạt động. Mã tôi đã sử dụng dựa trên số này là example.
Trong trường hợp mã của tôi chỉ dừng ở thời gian kết nối. Nó nói 'Không có phương thức xác thực thích hợp được tìm thấy để xác thực.' – Chirag