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

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

How do I upload a file to an SFTP server in C# (.NET)?

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


也许您可以编写脚本/控制winscp?

更新:winscp现在具有一个.NET库,它是一个支持SFTP,SCP和FTPS的nuget包。


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

1
2
3
4
5
6
7
8
9
// 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输出类似)可以在此处找到。

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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);
}

有关更多信息,请参见教程或下载试用版并检查样本。


.net框架中没有针对此的解决方案。

http://www.eldos.com/sbb/sftpcompare.php概述了一系列非免费选项。

您最好的免费选择是使用Granados扩展SSH。 http://www.routrek.co.jp/en/product/varaterm/granados.html


对于另一个非免费选项,请尝试edtFTPnet / PRO。它具有对SFTP的全面支持,并且在需要时还支持FTPS(当然还有FTP)。


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

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


推荐阅读

    更新文件命令linux?

    更新文件命令linux?,工作,系统,地址,信息,时间,命令,目录,基础,标准,网络,lin

    linux重名名文件命令?

    linux重名名文件命令?,图片,名称,名字,文件,命令,位置,代码,软件,系统,文件

    linux扩展文件命令?

    linux扩展文件命令?,工作,地址,系统,信息,命令,目录,管理,情况,文件,标准,Lin

    linux文件替换命令行?

    linux文件替换命令行?,资料,命令,文件,数据,名称,系统,实时,工作,字符串,批

    linux命令行解锁文件?

    linux命令行解锁文件?,系统,地址,工具,工作,管理,电脑,命令,文件,信息,密码,L

    读写文件命令linux?

    读写文件命令linux?,系统,数字,电脑,档案,地址,命令,文件,标准,位置,设备,lin

    linux文件异或命令?

    linux文件异或命令?,数字,系统,工作,管理,命令,数据,网络,文件,第一,单位,基

    linux脚本命令教学?

    linux脚本命令教学?,标准,数据,系统,脚本,代码,流程,官网,底部,命令,变量,lin

    linux文件复制的命令?

    linux文件复制的命令?,系统,文件,命令,目录,源文件,基本知识,位置,目标,选

    linux命令注释脚本?

    linux命令注释脚本?,代码,工具,名称,工作,脚本,发行,服务,环境,数据,基础,lin

    linux写文件命令行?

    linux写文件命令行?,工作,系统,命令,信息,名字,文件,目录,资料,标准,时间,lin

    linux复制命令文件?

    linux复制命令文件?,系统,文件,命令,目录,基本知识,源文件,目标,文件夹,路

    linux下文件均分命令?

    linux下文件均分命令?,管理,情况,系统,工作,信息,地址,命令,目录,单位,设备,L

    linux的文件替换命令?

    linux的文件替换命令?,系统,工作,实时,命令,文件,批量,字符串,内容,方法,表

    linux命令有两个文件?

    linux命令有两个文件?,文件,代码,系统,命令,两个,内容,文件夹,光标,后方,文

    脚本linux上运行命令?

    脚本linux上运行命令?,工具,代码,时间,密码,系统,环境,名字,位置,第三,下来,t

    linux查文件数量命令?

    linux查文件数量命令?,系统,数据,电脑,命令,文件,信息,代码,对比,软件,第三,l

    linux修改脚本的命令?

    linux修改脚本的命令?,系统,密码,服务,工作,工具,环境,信息,百度,代码,脚本,

    linux命令去重文件?

    linux命令去重文件?,系统,工作,命令,信息,数据,环境,代码,文件,目录,操作,Lin