如何在C#(.NET)中将文件上传到SFTP服务器?[关闭]


68

是否存在免费的.NET库,我可以使用该库将文件上载到SFTP(SSH FTP)服务器,该服务器在上载问题时引发异常并可以监视其进度?


编辑:这个答案是很久以前的,不再有效。查看评论您可能想看看SharpSSH。它支持开箱即用的SFTP,它是OpenSource。
Ryan Lanciaux


1
另一个选择是Renci SSH.NET。
CodesInChaos

Answers:



9

以下代码显示了如何使用Rebex SFTP组件将文件上传到SFTP服务器。

// create client, connect and log in 
Sftp client = new Sftp();
client.Connect(hostname);
client.Login(username, password);

// upload the 'test.zip' file to the current directory at the server 
client.PutFile(@"c:\data\test.zip", "test.zip");

client.Disconnect();

您可以使用LogWriter属性将完整的通信日志写入文件,如下所示。示例输出(来自FTP组件,但SFTP输出类似)可以在此处找到。

client.LogWriter = new Rebex.FileLogWriter(
   @"c:\temp\log.txt", Rebex.LogLevel.Debug); 

或使用以下事件拦截通信:

Sftp client = new Sftp();
client.CommandSent += new SftpCommandSentEventHandler(client_CommandSent);
client.ResponseRead += new SftpResponseReadEventHandler(client_ResponseRead);
client.Connect("sftp.example.org");

//... 
private void client_CommandSent(object sender, SftpCommandSentEventArgs e)
{
    Console.WriteLine("Command: {0}", e.Command);
}

private void client_ResponseRead(object sender, SftpResponseReadEventArgs e)
{
    Console.WriteLine("Response: {0}", e.Response);
}

有关更多信息,请参见教程下载试用版并检查示例


1
我对各种.NET SFTP客户端的有限测试表明,该商业产品是不错的选择。
Martin Liversage 2010年

2
在需要将其用于SSIS软件包之前,我已经使用过RebEx的东西。如果您希望通过商业性的第三方路线,他们将提供良好的支持和文档。
DS 2010年


0

不幸的是,它不在.NET Framework本身中。我希望您可以与FileZilla集成,但是我不认为它公开了一个接口。我认为他们确实有脚本,但是显然不会那么干净。

我在一个执行SFTP的项目中使用过CuteFTP。它公开了一个COM组件,我在其中创建了一个.NET包装器。您会发现,要抓住的是权限。它在安装CuteFTP的Windows凭据下可以很好地运行,但是在其他凭据下运行需要在DCOM中设置权限。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.