国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C#利用SFTP實現上傳下載

C#利用SFTP實現上傳下載

2022-01-25 14:11白鐵 C#

這篇文章主要為大家詳細介紹了C#利用SFTP實現上傳下載的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
/// <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
 
  }

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

原文鏈接:http://www.cnblogs.com/cbread/p/6202069.html

延伸 · 閱讀

精彩推薦
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
主站蜘蛛池模板: 中文字幕在线观看不卡视频 | 日韩影院在线 | 久久久网页 | 亚洲高清视频在线 | 欧美亚洲视频在线观看 | 麻豆网址 | 蜜桃国精产品二三三区视频 | 香港黄色录像片 | 亚洲国产精品99久久久久久久久 | 国产剧情一区二区 | 国产永久免费在线观看 | 日韩精品无码一区二区三区 | 成人免费视频008 | 自拍偷拍视频网站 | 日本不卡一区二区三区 | 在线观看三区 | 午夜成人免费视频 | 国产精品区一区二区三含羞草 | 日韩精品在线观 | 国产欧美精品一区二区三区 | 国产精品视频区 | 亚洲精品久久久一区二区三区 | 精品久久av | 美日韩一区二区三区 | 一区二区av| 国产精品第十页 | 日韩在线电影一区 | 成人影院一区二区 | 精品久久久久久久久久久 | 国产看片网站 | 欧美日韩综合视频 | 午夜视频在线观看网站 | 日韩在线免费 | 久久久久久国产精品免费免费狐狸 | 在线视频三级 | 中文字幕第一页在线 | 一区视频在线播放 | 欧美一区二区三区视频在线观看 | 亚洲a网 | 国产综合精品 | 久久精品小视频 |