首頁 >後端開發 >C++ >如何使用 C#/.NET 向 FTP 伺服器上傳和下載檔案?

如何使用 C#/.NET 向 FTP 伺服器上傳和下載檔案?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-11 07:31:45560瀏覽

How can I upload and download files to/from an FTP server using C#/.NET?

使用 C#/.NET 上傳和下載 FTP 伺服器檔案

本文介紹如何使用 C#/.NET 有效率地上傳和下載 FTP 伺服器檔案。我們將提供多種方法,包括使用 WebClientFtpWebRequest,並展示如何追蹤上傳和下載進度。

檔案上傳

方法一:使用 WebClient (簡單方法)

這是上傳檔案的簡單方法:

<code class="language-csharp">WebClient client = new WebClient();
client.Credentials = new NetworkCredential("用户名", "密码");
client.UploadFile("ftp://ftp.example.com/远程路径/文件.zip", @"C:\本地路径\文件.zip");</code>

方法二:使用 FtpWebRequest (流複製,更精細控制)

此方法允許更精細地控制上傳過程,透過流複製實現:

<code class="language-csharp">FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/远程路径/文件.zip");
request.Credentials = new NetworkCredential("用户名", "密码");
request.Method = WebRequestMethods.Ftp.UploadFile;

using (Stream fileStream = File.OpenRead(@"C:\本地路径\文件.zip"))
using (Stream ftpStream = request.GetRequestStream())
{
    fileStream.CopyTo(ftpStream);
}</code>

方法三:使用 FtpWebRequest (分塊複製,進度追蹤)

此方法透過分塊複製檔案內容,實現上傳進度追蹤:

<code class="language-csharp">FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/远程路径/文件.zip");
request.Credentials = new NetworkCredential("用户名", "密码");
request.Method = WebRequestMethods.Ftp.UploadFile;

using (Stream fileStream = File.OpenRead(@"C:\本地路径\文件.zip"))
using (Stream ftpStream = request.GetRequestStream())
{
    byte[] buffer = new byte[10240];
    int read;
    while ((read = fileStream.Read(buffer, 0, buffer.Length)) > 0)
    {
        ftpStream.Write(buffer, 0, read);
        Console.WriteLine("已上传 {0} 字节", fileStream.Position);
    }
}</code>

檔案下載

方法一:使用 WebClient (簡單方法)

這是下載檔案的簡單方法:

<code class="language-csharp">WebClient client = new WebClient();
client.Credentials = new NetworkCredential("用户名", "密码");
client.DownloadFile("ftp://ftp.example.com/远程路径/文件.zip", @"C:\本地路径\文件.zip");</code>

方法二:使用 FtpWebRequest (流複製,更精細控制)

此方法允許更精細地控制下載過程,透過流複製實現:

<code class="language-csharp">FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/远程路径/文件.zip");
request.Credentials = new NetworkCredential("用户名", "密码");
request.Method = WebRequestMethods.Ftp.DownloadFile;

using (Stream ftpStream = request.GetResponse().GetResponseStream())
using (Stream fileStream = File.Create(@"C:\本地路径\文件.zip"))
{
    ftpStream.CopyTo(fileStream);
}</code>

方法三:使用 FtpWebRequest (分塊複製,進度追蹤)

此方法透過分塊複製檔案內容,實現下載進度追蹤:

<code class="language-csharp">FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/远程路径/文件.zip");
request.Credentials = new NetworkCredential("用户名", "密码");
request.Method = WebRequestMethods.Ftp.DownloadFile;

using (Stream ftpStream = request.GetResponse().GetResponseStream())
using (Stream fileStream = File.Create(@"C:\本地路径\文件.zip"))
{
    byte[] buffer = new byte[10240];
    int read;
    while ((read = ftpStream.Read(buffer, 0, buffer.Length)) > 0)
    {
        fileStream.Write(buffer, 0, read);
        Console.WriteLine("已下载 {0} 字节", fileStream.Position);
    }
}</code>

請記得將 "用户名", "密码", "ftp://ftp.example.com/远程路径/文件.zip", 和 @"C:本地路径文件.zip" 替換為您的實際 FTP 伺服器資訊和檔案路徑。

以上是如何使用 C#/.NET 向 FTP 伺服器上傳和下載檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn