首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C# FTP 操作完整指南:FtpWebRequest 上傳下載、目錄管理與協議限制

     編輯:程式設計疑難解答

核心認知:FTP 協議不支援「遠端修改檔案」

FTP 命令集無「編輯檔案」指令。所謂修改 = 下載 → 本地修改 → 上傳覆蓋。

.NET 核心類:FtpWebRequest / FtpWebResponse


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}");

常用 Method 列舉

  • UploadFile、DownloadFile、DeleteFile、Rename
  • ListDirectory、ListDirectoryDetails(含權限/大小/時間)
  • MakeDirectory、RemoveDirectory
  • GetFileSize、GetDateTimestamp

實戰注意點

  1. 被動模式:預設啟用,防火牆/NAT 友好。主動模式需 req.UsePassive = false 並開放數據端口。
  2. 二進制/ASCII:req.UseBinary = true(預設)傳圖片/壓縮包;文本檔可設 false 自動換行轉換。
  3. SSL/TLS:req.EnableSsl = true 需伺服器支援 FTPS(隱式/顯式)。
  4. 大檔案斷點續傳:FTP 支援 REST 命令,需手動設定 req.ContentOffset。
  5. 異步:.NET 4.5+ 使用 GetRequestStreamAsync/GetResponseAsync 避免阻塞 UI。

現代替代:FluentFTP 庫

開源、支援異步、自動重試、目錄遞歸、進度回報,API 更友善:


using var conn = new AsyncFtpClient("host", "user", "pass");
await conn.Connect();
await conn.UploadFile(localPath, "/remote/path");
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved