我在C# 2015中使用SSH.NET。
用这种方法我可以上传一个文件到我的SFTP服务器。
public void upload()
{
const int port = 22;
const string host = "*****";
const string username = "*****";
const string password = "*****";
const string workingdirectory = "*****";
string uploadfolder = @"C:\test\file.txt";
Console.WriteLine("Creating client and connecting");
using (var client = new SftpClient(host, port, username, password))
{
client.Connect();
Console.WriteLine("Connected to {0}", host);
client.ChangeDirectory(workingdirectory);
Console.WriteLine("Changed directory to {0}", workingdirectory);
using (var fileStream = new FileStream(uploadfolder, FileMode.Open))
{
Console.WriteLine("Uploading {0} ({1:N0} bytes)",
uploadfolder, fileStream.Length);
client.BufferSize = 4 * 1024; // bypass Payload error large files
client.UploadFile(fileStream, Path.GetFileName(uploadfolder));
}
}
}
这对于单个文件非常有效。现在我想上传整个文件夹/目录。
现在有没有人如何做到这一点?
2条答案
按热度按时间nbysray51#
没有什么神奇的方法。您必须枚举文件并逐个上传:
如果你想要一个更简单的代码,你将不得不使用另一个库。例如,myWinSCP .NET assembly可以使用对
Session.PutFilesToDirectory
的单个调用来上传整个目录:jyztefdp2#
如果有帮助,我已经将代码翻译成VB.NET:
使用示例: