首页 >后端开发 >C++ >如何使用 C#/.NET 向 FTP 服务器上传和下载文件?

如何使用 C#/.NET 向 FTP 服务器上传和下载文件?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-11 07:31:45562浏览

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