Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C# использование FileOpenDialog для фтп 
:(
    Опции темы
Lottarend
Дата 3.6.2010, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 3.6.2010

Репутация: нет
Всего: нет



Пишу простенький фтп клиент. С закачкой файлов на сервер все прошло замечательно, а вот со скачиванием проблема. 

   
Код

OpenFileDialog dialog = new OpenFileDialog();
            string server = "server";
            string username = "name";
            string password = "password";
            dialog.InitialDirectory = string.Format("ftp://{1}:{2}@{0}", server, username, password);
            dialog.ShowDialog(this);
            string filename = dialog.FileName;


Вот, собственно. Пытаюсь использовать OpenFileDialog для просмотра файлов на фтп, но вместо этого мне выдает директорию на компе. Можно ли вообще как-то использовать OpenFileDialog для этого?
PM MAIL   Вверх
mrbrooks
Дата 3.6.2010, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



Цитата(Lottarend @  3.6.2010,  14:00 Найти цитируемый пост)
Можно ли вообще как-то использовать OpenFileDialog для этого? 

впервые такое вижу. Для реализации клиент используйте FtpWebRequest  
PM MAIL   Вверх
Lottarend
Дата 3.6.2010, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 3.6.2010

Репутация: нет
Всего: нет



Я его использую. Ну, просто вот, например, как с закачкой было:


Код

         OpenFileDialog OF = new OpenFileDialog();
            OF.ShowDialog();
            string filename = OF.FileName;
            FileInfo fileInf = new FileInfo(filename);
            string uri = "ftp://" + "server" + "/" + fileInf.Name;
            FtpWebRequest reqFTP;
            // Создаем объект FtpWebRequest
            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + "server" + "/" + fileInf.Name));
            // Учетная запись
            reqFTP.Credentials = new NetworkCredential("name", "password");
            reqFTP.KeepAlive = false;
            // Задаем команду на закачку
            reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
            // Тип передачи файла
            reqFTP.UseBinary = true;
            // Сообщаем серверу о размере файла
            reqFTP.ContentLength = fileInf.Length;
            // Буффер в 2 кбайт
            int buffLength = 2048;
            byte[] buff = new byte[buffLength];
            int contentLen;
            // Файловый поток
            FileStream fs = fileInf.OpenRead();
            try
            {
                Stream strm = reqFTP.GetRequestStream();
                // Читаем из потока по 2 кбайт
                contentLen = fs.Read(buff, 0, buffLength);
                // Пока файл не кончится
                while (contentLen != 0)
                {
                    strm.Write(buff, 0, contentLen);
                    contentLen = fs.Read(buff, 0, buffLength);
                }
                // Закрываем потоки
                strm.Close();
                fs.Close();
                MessageBox.Show("Закачка прошла успешно");
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message, "Ошибка");

            }

        }
            

       
Я хочу похожим способом реализовать скачивание. То есть, через OpenFileDialog выбрать файл на фтп сервере. Так можно сделать?

Это сообщение отредактировал(а) Lottarend - 3.6.2010, 13:16
PM MAIL   Вверх
mrbrooks
Дата 3.6.2010, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



тут вся фича использования класса WebRequestMethods.Ftp
Использование его поля ListDirectory к примеру дает команду на возвращение краткого список файлов на FTP-сервере. 
ListDirectoryDetails - полного.
Посмотрите на это класс в msdn. Там полно статических полей ориентированных на работу с FTP.

Собственно полученный список - можно загрузить в контрол аля TextBox или ListBox и это буде своеобразный проводником на сервере. 

Погуглите. Должна быть масса примеров FTP клиентов на .NET
PM MAIL   Вверх
Lottarend
Дата 8.6.2010, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 3.6.2010

Репутация: нет
Всего: нет



Большое спасибо за совет про ListDirectoryDetails) Все получилось!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0646 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.