FTP 命令集無「編輯檔案」指令。所謂修改 = 下載 → 本地修改 → 上傳覆蓋。
var req = (FtpWebRequest)WebRequest.Create("ftp://host/path/file.txt");
req.Credentials = new NetworkCredential("user", "pass");
req.Method = WebRequestMethods.Ftp.UploadFile; // 或 DownloadFile, ListDirectory, MakeDirectory
using (var fs = File.OpenRead(localPath))
using (var rs = req.GetRequestStream())
fs.CopyTo(rs);
using (var resp = (FtpWebResponse)req.GetResponse())
Console.WriteLine($"Status: {resp.StatusDescription}");
UploadFile、DownloadFile、DeleteFile、RenameListDirectory、ListDirectoryDetails(含權限/大小/時間)MakeDirectory、RemoveDirectoryGetFileSize、GetDateTimestampreq.UsePassive = false 並開放數據端口。req.UseBinary = true(預設)傳圖片/壓縮包;文本檔可設 false 自動換行轉換。req.EnableSsl = true 需伺服器支援 FTPS(隱式/顯式)。REST 命令,需手動設定 req.ContentOffset。GetRequestStreamAsync/GetResponseAsync 避免阻塞 UI。開源、支援異步、自動重試、目錄遞歸、進度回報,API 更友善:
using var conn = new AsyncFtpClient("host", "user", "pass");
await conn.Connect();
await conn.UploadFile(localPath, "/remote/path");