国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#利用SFTP實現上傳下載

2020-01-24 00:26:30
字體:
來源:轉載
供稿:網友

sftp是ftp協議的升級版本,是犧牲上傳速度為代價,換取安全性能,本人開始嘗試使用Tamir.SharpSSH.dll但它對新版本的openssh 不支持,所有采用Ssh.Net方式 需要依賴:Renci.SshNet.dll 下載鏈接

/// <summary>  /// SFTP操作類  /// </summary>  public class SFTPHelper  {    #region 字段或屬性    private SftpClient sftp;    /// <summary>    /// SFTP連接狀態    /// </summary>    public bool Connected { get { return sftp.IsConnected; } }    #endregion    #region 構造    /// <summary>    /// 構造    /// </summary>    /// <param name="ip">IP</param>    /// <param name="port">端口</param>    /// <param name="user">用戶名</param>    /// <param name="pwd">密碼</param>    public SFTPHelper(string ip, string port, string user, string pwd)    {      sftp = new SftpClient(ip, Int32.Parse(port), user, pwd);    }    #endregion    #region 連接SFTP    /// <summary>    /// 連接SFTP    /// </summary>    /// <returns>true成功</returns>    public bool Connect()    {      try      {        if (!Connected)        {          sftp.Connect();        }        return true;      }      catch (Exception ex)      {        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("連接SFTP失敗,原因:{0}", ex.Message));        throw new Exception(string.Format("連接SFTP失敗,原因:{0}", ex.Message));      }    }    #endregion    #region 斷開SFTP    /// <summary>    /// 斷開SFTP    /// </summary>     public void Disconnect()    {      try      {        if (sftp != null && Connected)        {          sftp.Disconnect();        }      }      catch (Exception ex)      {        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("斷開SFTP失敗,原因:{0}", ex.Message));        throw new Exception(string.Format("斷開SFTP失敗,原因:{0}", ex.Message));      }    }    #endregion    #region SFTP上傳文件    /// <summary>    /// SFTP上傳文件    /// </summary>    /// <param name="localPath">本地路徑</param>    /// <param name="remotePath">遠程路徑</param>    public void Put(string localPath, string remotePath)    {      try      {        using (var file = File.OpenRead(localPath))        {          Connect();          sftp.UploadFile(file, remotePath);          Disconnect();        }      }      catch (Exception ex)      {        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件上傳失敗,原因:{0}", ex.Message));        throw new Exception(string.Format("SFTP文件上傳失敗,原因:{0}", ex.Message));      }    }    #endregion    #region SFTP獲取文件    /// <summary>    /// SFTP獲取文件    /// </summary>    /// <param name="remotePath">遠程路徑</param>    /// <param name="localPath">本地路徑</param>    public void Get(string remotePath, string localPath)    {      try      {        Connect();        var byt = sftp.ReadAllBytes(remotePath);        Disconnect();        File.WriteAllBytes(localPath, byt);      }      catch (Exception ex)      {        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件獲取失敗,原因:{0}", ex.Message));        throw new Exception(string.Format("SFTP文件獲取失敗,原因:{0}", ex.Message));      }    }    #endregion    #region 刪除SFTP文件    /// <summary>    /// 刪除SFTP文件     /// </summary>    /// <param name="remoteFile">遠程路徑</param>    public void Delete(string remoteFile)    {      try      {        Connect();        sftp.Delete(remoteFile);        Disconnect();      }      catch (Exception ex)      {        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件刪除失敗,原因:{0}", ex.Message));        throw new Exception(string.Format("SFTP文件刪除失敗,原因:{0}", ex.Message));      }    }    #endregion    #region 獲取SFTP文件列表    /// <summary>    /// 獲取SFTP文件列表    /// </summary>    /// <param name="remotePath">遠程目錄</param>    /// <param name="fileSuffix">文件后綴</param>    /// <returns></returns>    public ArrayList GetFileList(string remotePath, string fileSuffix)    {      try      {        Connect();        var files = sftp.ListDirectory(remotePath);        Disconnect();        var objList = new ArrayList();        foreach (var file in files)        {          string name = file.Name;          if (name.Length > (fileSuffix.Length + 1) && fileSuffix == name.Substring(name.Length - fileSuffix.Length))          {            objList.Add(name);          }        }        return objList;      }      catch (Exception ex)      {        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件列表獲取失敗,原因:{0}", ex.Message));        throw new Exception(string.Format("SFTP文件列表獲取失敗,原因:{0}", ex.Message));      }    }    #endregion    #region 移動SFTP文件    /// <summary>    /// 移動SFTP文件    /// </summary>    /// <param name="oldRemotePath">舊遠程路徑</param>    /// <param name="newRemotePath">新遠程路徑</param>    public void Move(string oldRemotePath, string newRemotePath)    {      try      {        Connect();        sftp.RenameFile(oldRemotePath, newRemotePath);        Disconnect();      }      catch (Exception ex)      {        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件移動失敗,原因:{0}", ex.Message));        throw new Exception(string.Format("SFTP文件移動失敗,原因:{0}", ex.Message));      }    }    #endregion  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乡城县| 东安县| 慈利县| 宝清县| 宜都市| 海门市| 旬阳县| 开封市| 贺兰县| 徐州市| 驻马店市| 响水县| 灵宝市| 黎平县| 寿阳县| 凌海市| 宣武区| 三门县| 平阴县| 云龙县| 尉犁县| 永定县| 东明县| 托克托县| 石河子市| 卓尼县| 吐鲁番市| 白银市| 长白| 固始县| 稷山县| 巴彦县| 正阳县| 台北市| 浦东新区| 调兵山市| 离岛区| 吉安县| 新河县| 确山县| 金乡县|