日期:2014-05-17 浏览次数:21151 次
最近项目中需要用到SFTP来上传,下载文件,经过查资料,POC终于修成正果,先将具体的实现过程写下,方便同样需求的兄弟,姐妹参考。
名字解释
SFTP:SecureFileTransferProtocol的缩写,安全文件传送协议.相对于FTP多了一个加密的过程。
个人总结了一下要实现C#对SFTP的操作(上传,下载,删除,遍历等等)有2种较快的途径
1.购买第三方的类库
2.使用开源的类库(比较流行的:SharpSSH,SshNet)
这里用的是SharpSSH.以下的内容基于SharpSSH。
具体步骤
1.从网站下载SharpSSH的源码(http://www.tamirgal.com/blog/page/SharpSSH.aspx)
这里可以下载源码+Bin文件,注:如果只下载Bin文件,里面的类库是不包含Delete file操作的。
因为项目需求,我们需要对远程文件进行删除,所以下载源码,加入Delete Function,然后重新编译
SharpSSH源码结构
我们需要在Sftp.cs 文件中加入Delete function,如下图所示。
重新编译,然后将生成的3个dll引用到项目中
2.基于SharpSSH,实现SFTP的常用操作
新建一个SFTPHelper.cs
public class SFTPHelper { private SshTransferProtocolBase m_sshCp; private SFTPHelper() { } public SFTPHelper(SshConnectionInfo connectionInfo) { m_sshCp = new Sftp(connectionInfo.Host, connectionInfo.User); if (connectionInfo.Pass != null) { m_sshCp.Password = connectionInfo.Pass; } if (connectionInfo.IdentityFile != null) { m_sshCp.AddIdentityFile(connectionInfo.IdentityFile); } } public bool Connected { get { return m_sshCp.Connected; } } public void Connect() { if (!m_sshCp.Connected) { m_sshCp.Connect(); } } public void Close() { if (m_sshCp.Connected) {