【问题标题】:Downloading a list of files from ftp to local folder using c#? [duplicate]使用c#将文件列表从ftp下载到本地文件夹? [复制]
【发布时间】:2013-12-29 09:02:03
【问题描述】:

我希望将 ftp 中的所有文件下载到我的本地文件夹。一旦下载到本地驱动器,所有文件都应在 ftp 中删除。

从下面的代码

  1. 我只能从我不期望的 ftp 下载一个文件

  2. 我需要将所有文件放在一个文件夹中,但不是以本地文件名的名称。

我的代码:

using (WebClient ftpClient = new WebClient())
{
   ftpClient.Credentials = new System.Net.NetworkCredential("ftpusername", "ftp pass");
   ftpClient.DownloadFile("ftp://ftpdetails.com/dec.docx",@"D:\\Mainfolder\test.docx");
}

从上面的代码中,我可以下载一个文件并将其仅放在文件名中..我有很多文件要从 ftp 下载并将其放在本地文件夹中..任何建议都非常感谢。

【问题讨论】:

  • 您的问题过于宽泛,您没有解释您遇到问题的具体部分。您想要 1) 列出 FTP 目录内容以及列表中的每个文件:2) 下载,3) 本地写入,4) 从 FTP 中删除。请参阅我作为第 1 步重复链接的问题,您必须能够从那里弄清楚其余的问题。

标签: c# .net ftp ftp-client ftpwebrequest


【解决方案1】:

我认为 WebClient 不是有效的 FTP 客户端。 请改用标准类 FtpWebRequestFtpWebResponse

否则会有一些免费的 C# ftp 客户端可以完成这项工作。

【讨论】:

    【解决方案2】:

    这是一个使用 FTPWebResponse 从目录中获取文件名列表的示例:

    using System;
    using System.IO;
    using System.Net;
    using System.Text;
    
    namespace Examples.System.Net
    {
        public class WebRequestGetExample
        {
            public static void Main()
            {
                // Get the object used to communicate with the server.
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.funet.fi/pub/standards/RFC/");
                request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
    
                // This example assumes the FTP site uses anonymous logon.
                request.Credentials = new NetworkCredential("anonymous", "janeDoe@contoso.com");
    
                FtpWebResponse response = (FtpWebResponse)request.GetResponse();
    
                Stream responseStream = response.GetResponseStream();
                StreamReader reader = new StreamReader(responseStream);
    
                while (!reader.EndOfStream)
                {
                    String filename =  reader.ReadLine();
                    Console.WriteLine(filename);
                    //you now have the file name, you can use it to download this specific file
    
    
                }
    
                Console.WriteLine("Directory List Complete, status {0}", response.StatusDescription);
    
                reader.Close();
                response.Close();
            }
        }
    }
    

    然后您可以使用此列表下载每个文件。请注意,如果您有很多文件要下载,您可能需要查看asyncronous downloading 以加快速度 - 但在您尝试实现任何异步内容之前,我会先让这个工作正常。

    【讨论】:

    • 请注意,“WebRequestMethods.Ftp.ListDirectoryDe​​tails”还返回文件的日期和大小。使用“WebRequestMethods.Ftp.ListDirectory”,您只收到文件名,因此无需解析它:-)
    • Paul,能否举个例子说明如何使用此列表下载文件?
    猜你喜欢
    • 2019-03-29
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多