如何将文件从 ftp 服务器显示到本地 windows 应用程序 gridview

how to display files from ftp server to a local windows application gridview

我已经将我的文件上传到 ftb 服务器,现在我想在我的本地 windows 应用程序 gridview 中显示这些文件 我想在 datagridview 中显示该文件。

public List<string> ListFiles()
    {
        // Get the object used to communicate with the server.
        var request = (FtpWebRequest)WebRequest.Create("ftp://ipaddress/Requests/");
        request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
        request.Credentials = new NetworkCredential("username", "password");


        List<string> files = new List<string>();
        using (var response = (FtpWebResponse)request.GetResponse())
        {

            using (var responseStream = response.GetResponseStream())
            {
                var reader = new StreamReader(responseStream);
                while (!reader.EndOfStream)
                {
                    var line = reader.ReadLine();
                    if (string.IsNullOrWhiteSpace(line) == false)
                    {
                        files.Add(line.Split(new[] { ' ', '\t' }).Last());
                    }
                }
                return files;

            }
        }
    }
following is the code on my load form.
FTPItility is my class in which  listfiles is a method
      FTPUtility obj = new FTPUtility();
                List<string> strings = new List<string>();
                dataGridViewRequest.DataSource = obj.ListFiles();

这是您可以使用的代码。

FtpUtility 的代码如下:

public class FtpUtility
{
    public string UserName { get; set; }
    public string Password { get; set; }
    public string Path { get; set; }
    public List<string> ListFiles()
    {
        var request = (FtpWebRequest)WebRequest.Create(Path);
        request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
        request.Credentials = new NetworkCredential(UserName, Password);
        List<string> files = new List<string>();
        using (var response = (FtpWebResponse)request.GetResponse())
        {
            using (var responseStream = response.GetResponseStream())
            {
                var reader = new StreamReader(responseStream);
                while (!reader.EndOfStream)
                {
                    var line = reader.ReadLine();
                    if (string.IsNullOrWhiteSpace(line) == false)
                    {
                        var fileName = line.Split(new[] { ' ', '\t' }).Last();
                        if (!fileName.StartsWith("."))
                            files.Add(fileName);
                    }
                }
                return files;
            }
        }
    }
}

下面是表格代码:

我创建了一个 FtpUtility 实例并向其传递了所需的参数,然后获取文件并将其放入友好列表(名称、路径)并绑定到网格:

private void Form1_Load(object sender, EventArgs e)
{
    this.LoadFiles();
}

public void LoadFiles()
{
    var ftp = new FtpUtility();
    ftp.UserName = "username";
    ftp.Password = "password";
    ftp.Path = "ftp://address";

    this.dataGridView1.DataSource = ftp.ListFiles()
                                        .Select(x => new
                                        {
                                            Name = x, //Name Column
                                            Path = ftp.Path + x   //Path Column
                                        }).ToList();
}