.NET Framework 2.0 引入 System.Net.FtpWebRequest,無需第三方函式庫即可實作完整 FTP 用戶端功能。支援上傳、下載、刪除、列表、建立目錄等標準操作。
using System.Net;
using System.IO;
FtpWebRequest 指向 FTP 伺服器 URIMethod 屬性指定操作(上傳/下載/列表等)UseBinary、UsePassive、EnableSsl 等Credentials = new NetworkCredential(user, pass)GetRequestStream()(上傳)或 GetResponse()(下載/列表)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 導致伺服器拒絕或逾時Task.Run 或非同步模式