Заполните ComboBox именами файлов из каталога на FTP-сервере
У меня есть папка с файлами на моем 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();
Спасибо! Я не знал, возможно ли это вообще!
2 ответа
Читайте список по строкам:
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");
Затем перебрать отдельные файлы, добавив их в свой комбобокс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
Обратите внимание, что если вы захотите отобразить информацию из другого ответа FTP, вам сначала нужно очистить combobox1, как показано ниже: combobox1.Items.Clear();