首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 2.0 FTP 用戶端實作(一):基礎架構與流程

     編輯:關於C語言

.NET 2.0 內建 FTP 支援

.NET Framework 2.0 引入 System.Net.FtpWebRequest,無需第三方函式庫即可實作完整 FTP 用戶端功能。支援上傳、下載、刪除、列表、建立目錄等標準操作。

必要命名空間

using System.Net;
using System.IO;

標準操作流程(7 步驟)

  1. 建立 FtpWebRequest 指向 FTP 伺服器 URI
  2. 設定 Method 屬性指定操作(上傳/下載/列表等)
  3. 設定屬性:UseBinary、UsePassive、EnableSsl 等
  4. 設定認證:Credentials = new NetworkCredential(user, pass)
  5. 呼叫 GetRequestStream()(上傳)或 GetResponse()(下載/列表)
  6. 讀寫資料流(Stream)
  7. 關閉資料流與回應物件

URI 格式

ftp://server[:port]/path/to/file
ftp://user:pass@server/path   // 不建議,密碼明文出現在 URI

核心類別關係圖

WebRequest (abstract)
  └─ FtpWebRequest
        ├─ Create(uri) → FtpWebRequest
        ├─ Method (WebRequestMethods.Ftp.*)
        ├─ Credentials (ICredentials)
        ├─ GetRequestStream() → Stream (上傳用)
        └─ GetResponse() → FtpWebResponse
              ├─ GetResponseStream() → Stream (下載用)
              ├─ ContentLength
              └─ StatusCode / StatusDescription

第一個範例:上傳檔案骨架

string ftpUri = "ftp://ftp.example.com/upload/test.txt";
var request = (FtpWebRequest)WebRequest.Create(ftpUri);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("user", "pass");
request.UseBinary = true;

// 後續:開啟本地檔案 → 寫入 request.GetRequestStream() → 關閉 → GetResponse()

常見陷阱

  • 忘記關閉 RequestStream/ResponseStream 導致連線洩漏
  • 未設定 UseBinary = true 導致二進位檔損壞
  • 防火牆封鎖主動模式資料連線(預設被動模式通常可行)
  • 大檔案未設定 ContentLength 導致伺服器拒絕或逾時
  • 同步 API 阻塞 UI 執行緒,WinForms/WPF 應使用 Task.Run 或非同步模式

後續文章預告

  • 第 2 部分:上傳完整實作與屬性深度解析
  • 第 3 部分:下載、檔案列表、刪除、重新命名、目錄操作
  • 進階主題:SSL/TLS、續傳、非同步模式、FluentFTP 遷移指南
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved