首页 > 解决方案 > 如何在 C# 中下载多个 FTP 文件

问题描述

所以我试图做的是将FTP服务器上一个目录中的多个文件下载到本地目录中,我已经知道如何只下载一个文件,但我不知道如何下载多个文件。

FtpWebRequest request =
(FtpWebRequest)WebRequest.Create(ip.Text + "/mods/");
                request.Credentials = new NetworkCredential(user.Text, pass.Text);
                request.Method = WebRequestMethods.Ftp.DownloadFile;

                using (Stream ftpStream = request.GetResponse().GetResponseStream())
                using (Stream fileStream = File.Create(directory.Text + @"\mods\"))
                {
                    byte[] buffer = new byte[10240];
                    int read;
                    while ((read = ftpStream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        fileStream.Write(buffer, 0, read);
                        Console.WriteLine("Downloaded {0} bytes", fileStream.Position);
                    }

每当我只使用/mods/目录时,我都会收到一条错误消息WebClient Exception

每当我使用/mods/example_file.txt它成功下载。

所以我的目标是,如何将整个/mods/目录下载到我的计算机上。

我已经搜索了互联网并阅读了多个帖子,但我似乎无法弄清楚这一点。

我也是 C# 的初学者,所以很可能我做错了什么。

标签: c#ftp

解决方案


如何使用 C# 将多个文件从 FTP 服务器传输到本地目录的可能重复项

总结一下:c# 和 .net 框架(或任何其他框架)改变了 FTP 服务器和通信协议的底层性质。在 FTP 中,您没有“获取 DIR X 下的所有内容”的命令,而是必须列出目录的内容,并且根据您的要求,您必须请求特定的文件。

您可以遍历目录的内容并分别列出每个文件,如果您正在寻找更高级的行为,例如并发等,那么您可以使用框架特定的功能(异步编程和多线程等)来实现这一点。


推荐阅读