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

首頁 > 編程 > C# > 正文

C#利用SFTP實現上傳下載

2019-10-29 21:08:57
字體:
來源:轉載
供稿:網友

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  }

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


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仙桃市| 佛冈县| 双鸭山市| 新邵县| 仙居县| 洞口县| 罗山县| 西畴县| 建德市| 读书| 三门县| 金乡县| 泗阳县| 南皮县| 泰宁县| 徐闻县| 修水县| 合肥市| 南汇区| 永寿县| 湖南省| 荥经县| 望城县| 潞西市| 佛冈县| 理塘县| 长泰县| 江油市| 彭水| 古田县| 达孜县| 宁明县| 易门县| 临猗县| 太和县| 阿勒泰市| 库车县| 大丰市| 大足县| 梨树县| 都兰县|