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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение файла с веба на диск без браузера 
:(
    Опции темы
drdoom
Дата 30.5.2009, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вообщем проблема в следущем, мне надо сохранить файл по URI ссылке на диск без использования браузера
чтобы загрузить файл я использовал следующе
Код

string fileName =
                "http://kopcap.sarbest.ru/index.php?option=com_vfm&Itemid=60&do=download&file=FlyLinkDC%28r379%29Corbina.srt.edition.exe";
            WebRequest request = WebRequest.Create(fileName);
            Stream stream = request.GetResponse().GetResponseStream();
            BinaryReader reader = new BinaryReader(stream);

в итоге файл в бинари ридере, а я не знаю че с ним делать, мож я неправильно что делаю и не нужен реадер как таковой, но мне нужно сохранить файла на диске каким либо способом. Заранее благодарен за помощь.
P.S. да пытался считать массив байтов в массив, но в бинанридере нету параметра Lenght и я не знаю сколько считывать, а функция PeekChar() всегда возрващает -1, потому что поток не поддерживает поиск. в итоге не могу запихать его никуда.

Добавлено через 11 минут и 22 секунды
Подписаться забыл)
PM MAIL ICQ   Вверх
DVariuS
Дата 30.5.2009, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



drdoom, вот самый простой вариант:
Код

            string address =
                @"http://static.diary.ru/userdir/3/2/7/5/327523/14250564.jpg";
            string fileName = @"cat.jpg";
            WebClient client = new WebClient();
            client.DownloadFile(address, fileName);

Этот код сохранит файл по ссылке в папке с приложением.
PM MAIL   Вверх
drdoom
Дата 30.5.2009, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасибо работает, а вот зачем собачка перед строкой, сто раз видел так и не понял почему, кодировку задает чтоли? и еще можно ли вебклиент использовать асинхронно, чтобы отображать скока проценвто файла загружено?
PM MAIL ICQ   Вверх
DVariuS
Дата 30.5.2009, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(drdoom @  30.5.2009,  21:44 Найти цитируемый пост)
а вот зачем собачка перед строкой

Она указывает, что необходимо воспринимать строку "как есть", не учитывая управляющих символов. В данном случае использована мной на всякий случай, чтобы избежать возможных ошибок.


Цитата(drdoom @  30.5.2009,  21:44 Найти цитируемый пост)
и еще можно ли вебклиент использовать асинхронно, чтобы отображать скока проценвто файла загружено

Конечно! Юзай метод DownloadFileAsync и подписывайся на события DownloadProgressChanged и DownloadFileCompleted.  smile 
PM MAIL   Вверх
drdoom
Дата 30.5.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Пасиб насчет подписыванья уже догадался сам, тока я так понял там надо функцию подписывать через бегин инвойк?
PM MAIL ICQ   Вверх
DVariuS
Дата 30.5.2009, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(drdoom @ 30.5.2009,  21:59)
Пасиб насчет подписыванья уже догадался сам, тока я так понял там надо функцию подписывать через бегин инвойк?

Неа, инвоков не надо  smile
Например:
Код

client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
...

void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }


Это сообщение отредактировал(а) DVariuS - 30.5.2009, 22:47
PM MAIL   Вверх
drdoom
Дата 30.5.2009, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



проста, если вызывать функцию формы, в которой создается асинхронная загрузка, все вызовы событий произсодят после окончания скачки, я так понял это потмоу что форма блокирует вызов событий, я в другой форме событие стал обрабавтывать. стало работать, тока секунды 2 прогресс не обновляется, только потом начинает это делать, не пойму в чем проблема
PM MAIL ICQ   Вверх
DVariuS
Дата 31.5.2009, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(drdoom @  30.5.2009,  22:49 Найти цитируемый пост)
тока секунды 2 прогресс не обновляется, только потом начинает это делать, не пойму в чем проблема 

За эти 2 секунды устанавливается соединение с сервером - это нормально, что прогресс не обновляется.  smile 
Цитата(drdoom @  30.5.2009,  22:49 Найти цитируемый пост)
все вызовы событий произсодят после окончания скачки

После окончания скачки происходит генерация события DownloadFileCompleted, во время - DownloadProgressChanged.

PM MAIL   Вверх
drdoom
Дата 31.5.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я прост по собыитию DownloadProgressChanged вызывал мессадж бокс , видать он блокировал поток и потом их туча появлеятся в конце выичлиенй, но проблемы уже нет, я в другой форме все исправил

Добавлено через 31 секунду
Кстати у тебя исходиников нету для книги Сетевое программирование для профессионалов wrox издание

PM MAIL ICQ   Вверх
DVariuS
Дата 31.5.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(drdoom @  31.5.2009,  11:25 Найти цитируемый пост)
Кстати у тебя исходиников нету для книги Сетевое программирование для профессионалов wrox издание

http://apress.com/book/downloadfile/1800
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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