因为项目的需要,整理了一段C#操作sftp的方法。
依赖的第三方类库名称为:SharpSSH 1.1.1.13.
代码如下:
1: using System; 2: using System.Collections.Generic; 3: using System.Linq; 4: using System.Text; 5: using System.Collections.Specialized; 6: using System.Configuration; 7: using Tamir.SharpSsh; 8: using System.IO; 9: using Tamir.SharpSsh.jsch; 10: 11: namespace TestSftp 12: { 13: /// <summary> 14: /// 访问Sftp服务器方法(凭证请在config文件中配置) 15: /// </summary> 16: public class SftpClient : IDisposable 17: { 18: #region Properties 19: 20: /// <summary> 21: /// 主机名或IP 22: /// </summary> 23: public string HostName { get; private set; } 24: /// <summary> 25: /// 用户名 26: /// </summary> 27: public string UserName { get; private set; } 28: /// <summary> 29: /// 密码 30: /// </summary> 31: public string Password { get; private set; } 32: 33: /// <summary> 34: /// 端口号(默认端口为22) 35: /// </summary> 36: public int Port { get; private set; } 37: 38: #endregion 39: 40: private static readonly string defRemotePath = "/";//默认操作是都是从根目录开始。 41: private ChannelSftp m_sftp; 42: private Session m_session; 43: Channel m_channel; 44: 45: /// <summary> 46: /// 从配置文件中加载凭证信息 47: /// </summary> 48: public SftpClient() 49: { 50: var config = ConfigurationManager.GetSection("SftpServer") as NameValueCollection; 51: this.HostName = config["host_name"]; 52: this.UserName = config["user_name"]; 53: this.Password = config["password"]; 54: this.Port = Convert.ToInt32(config["port"] ?? "22");//默认端口为22 55: } 56: 57: #region Events 58: 59: /// <summary> 60: /// SFTP获取文件 61: /// </summary> 62: /// <param name="remotePath"></param> 63: /// <param name="localPath"></param> 64: /// <returns></returns> 65: 66: public bool Get(string remotePath, string localPath) 67: { 68: try 69: { 70: string fullRemotePath = defRemotePath + remotePath.TrimStart('/'); 71: Tamir.SharpSsh.java.String src = new Tamir.SharpSsh.java.String(fullRemotePath); 72: Tamir.SharpSsh.java.String dst = new Tamir.SharpSsh.java.String(localPath); 73: m_sftp.get(src, dst); 74: return true; 75: } 76: catch 77: { 78: return false; 79: } 80: } 81: 82: /// <summary> 83: ///SFTP存放文件 84: /// </summary> 85: /// <param name="localPath"></param> 86: /// <param name="remotePath"></param> 87: /// <returns></returns> 88: public void Put(string localPath, string remotePath) 89: { 90: Tamir.SharpSsh.java.String src = new Tamir.SharpSsh.java.String(localPath); 91: string fullRemotePath = defRemotePath + remotePath.TrimStart('/'); 92: Tamir.SharpSsh.java.String dst = new Tamir.SharpSsh.java.String(fullRemotePath); 93: m_sftp.put(src, dst); 94: } 95: 96: |