最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#利用SFTP實現(xiàn)上傳下載

 更新時間:2017年10月27日 14:27:33   作者:白鐵  
這篇文章主要為大家詳細介紹了C#利用SFTP實現(xiàn)上傳下載的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

/// <summary>
  /// SFTP操作類
  /// </summary>
  public class SFTPHelper
  {
    #region 字段或屬性
    private SftpClient sftp;
    /// <summary>
    /// SFTP連接狀態(tài)
    /// </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

  }

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C#圖形編程GDI+基礎介紹

    C#圖形編程GDI+基礎介紹

    這篇文章介紹了C#中的圖形編程GDI+,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-02-02
  • C#對DataTable里數(shù)據(jù)排序的方法

    C#對DataTable里數(shù)據(jù)排序的方法

    在日常開發(fā)過程中,有一個DataTable集合,里面有很多字段,現(xiàn)在要求針對某一列進行排序,如果該列為數(shù)字的話,進行ASC即可實現(xiàn),但是該字段類型為string,此時排序就有點不正確了
    2013-11-11
  • 關于C#中使用Oracle存儲過程返回結果集的問題

    關于C#中使用Oracle存儲過程返回結果集的問題

    Oracle中可以使用游標(Cursor)對數(shù)據(jù)集進行操作,但在存儲過程輸出參數(shù)中直接使用Cursor錯誤,下面小編給大家?guī)砹薈#中使用Oracle存儲過程返回結果集的問題,感興趣的朋友一起看看吧
    2021-10-10
  • C#窗體-數(shù)據(jù)庫連接及登錄功能的實現(xiàn)案例

    C#窗體-數(shù)據(jù)庫連接及登錄功能的實現(xiàn)案例

    這篇文章主要介紹了C#窗體-數(shù)據(jù)庫連接及登錄功能的實現(xiàn)案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Unity shader實現(xiàn)自由放大縮小效果

    Unity shader實現(xiàn)自由放大縮小效果

    這篇文章主要為大家詳細介紹了Unity shader實現(xiàn)自由放大縮小效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Unity快速生成常用文件夾的方法

    Unity快速生成常用文件夾的方法

    這篇文章主要介紹了Unity快速生成常用文件夾的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • winform 實現(xiàn)控制輸入法

    winform 實現(xiàn)控制輸入法

    在工作中遇到這樣一個問題,在系統(tǒng)使用過程中,輸入法會變灰導致無法使用輸入法輸入文字,就好像輸入法被禁用了沒有啟用似的。對此,在這里做個備錄
    2015-08-08
  • C# 如何調用SAP RFC

    C# 如何調用SAP RFC

    這篇文章主要介紹了C# 如何調用SAP RFC,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • c# 制作gif的四種方法

    c# 制作gif的四種方法

    這篇文章主要介紹了c# 制作gif的四種方法,幫助大家更好的理解和學習c#編程語言,感興趣的朋友可以了解下
    2020-12-12
  • C#程序連接數(shù)據(jù)庫及讀取數(shù)據(jù)庫中字段的簡單方法總結

    C#程序連接數(shù)據(jù)庫及讀取數(shù)據(jù)庫中字段的簡單方法總結

    包括C#連接Access、Oracle或者SQL Server,這里整理了一些C#連接數(shù)據(jù)庫及從讀取數(shù)據(jù)庫中字段的簡單方法總結,需要的朋友可以參考下
    2016-05-05

最新評論

无锡市| 莱芜市| 南靖县| 玉田县| 蓬安县| 井陉县| 彭州市| 海淀区| 岗巴县| 淮南市| 邵阳县| 梁平县| 新民市| 阿鲁科尔沁旗| 滨海县| 牟定县| 讷河市| 吉林省| 定安县| 翁源县| 宜都市| 鞍山市| 普洱| 库车县| 久治县| 抚宁县| 尼勒克县| 农安县| 和硕县| 贡觉县| 卫辉市| 射洪县| 兰溪市| 乾安县| 武定县| 涡阳县| 高碑店市| 邻水| 将乐县| 靖安县| 呼伦贝尔市|