【问题标题】:Fill ComboBox with names of files from a directory on FTP server使用 FTP 服务器上目录中的文件名填充 ComboBox
【发布时间】:2018-06-21 15:49:55
【问题描述】:

我的 FTP 服务器中有一个文件夹,我想用该文件夹内的内容填充 ComboBox。我该怎么做呢?

string result = string.Empty;

//Request location and server name---------->
FtpWebRequest request = 
    (FtpWebRequest)WebRequest.Create("ftp://*******" +"/" + "Products" + "/");

//Lists directory
request.Method = WebRequestMethods.Ftp.ListDirectory;

// set credentials
request.Credentials = new NetworkCredential("user1","1234");
//initialize response
FtpWebResponse response = (FtpWebResponse)request.GetResponse();

//reader to read response
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
combobox1.Text = FTP_Server();
//data from file.
result = reader.ReadToEnd();
reader.Close();
response.Close();

谢谢!我不知道这是否可能!

【问题讨论】:

    标签: c# .net ftp ftpwebrequest


    【解决方案1】:

    逐行阅读列表:

    FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://example.com/remote/path/");
    request.Method = WebRequestMethods.Ftp.ListDirectory;
    request.Credentials = new NetworkCredential("username", "password");
    
    comboBox1.BeginUpdate();
    try
    {
        using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
        using (Stream stream = response.GetResponseStream())
        using (StreamReader reader = new StreamReader(stream))
        {
            while (!reader.EndOfStream)
            {
                comboBox1.Items.Add(reader.ReadLine());
            }
        }
    }
    finally
    {
        comboBox1.EndUpdate();
    }
    

    如果有很多条目,将整个列表下载到一个字符串并随后将其拆分(如另一个答案所建议的那样)可能非常无效。

    【讨论】:

      【解决方案2】:

      在不知道响应字符串的确切格式的情况下,我的直觉是拆分响应字符串:

      string files[] = result.Split("\r\n");
      

      然后遍历单个文件,将它们添加到您的组合框1的Items

      // Depending on how many items you're adding, you may wish to prevent a repaint until the operation is finished
      combobox1.BeginUpdate();
      foreach(string file in files)
      {
          combobox1.Items.Add(file);
      }
      combobox1.EndUpdate();
      

      这应该会为您解决! MSDN 上也有一些优秀的(详尽的)文档,其中通常包含一些使用示例来进一步帮助您:https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox(v=vs.110).aspx#Examples

      请注意,如果您最终想要显示来自不同 FTP 响应的信息,则必须首先清除组合框1:combobox1.Items.Clear();

      【讨论】:

      • 很高兴帮助@JonHorn!如果它最终为您提供所需的答案,请记住接受答案:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多