簡體   English   中英

使用來自FTP服務器上目錄的文件名填充ComboBox

[英]Fill ComboBox with names of files from a directory on FTP server

我的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();

謝謝! 我什至不知道這是否可能!

按行閱讀清單:

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();
}

如果有很多條目,那么將整個列表下載到一個字符串中,然后將其分割(如另一個答案所示)可能會非常無效。

不知道您的響應字符串的確切格式,我的直覺是將響應字符串拆分:

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

然后遍歷各個文件,將它們添加到combobox1的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/zh-cn/library/system.windows.forms.combobox (v = vs.110)的.aspx#實例

請注意,如果最終想要顯示來自其他FTP響應的信息,則必須像這樣首先清除combobox1: combobox1.Items.Clear();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM