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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скачать файл с докачкой 
:(
    Опции темы
Gregorian
Дата 11.1.2007, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Как скачать файл с возможностью докачки?
--------------------
Вступил на путь доморощенного жабиста дилетанта! 
PM MAIL   Вверх
awers
Дата 12.1.2007, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



думаю смысл довольно прост. Если в один поток - держи в памяти метку, сколько скачали. Коннект оборвался (если сервер поддерживает докачку) - начинай качать с метки ...
PM MAIL WWW ICQ Skype   Вверх
Gregorian
Дата 12.1.2007, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Это и козе понятно!  smile 
Я не знаю как начать закачку с заданной позиции в файле? Как осуществить это на http и ftp? Я не собираюсь писать для этих протоколов собственные библиотеки!

--------------------
Вступил на путь доморощенного жабиста дилетанта! 
PM MAIL   Вверх
awers
Дата 12.1.2007, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А нафига? Попробуй к примеру посмотреть специф. к апачу .. а мож по самому HTTP. 
Как вариант мона посмотреть на примере софтины RegetDelux какие хедеры она отправляет для получения файла с определенной позиции
PM MAIL WWW ICQ Skype   Вверх
Ch0bits
Дата 13.1.2007, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

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



Давноненько задумывался на этой проблемой. По идее должна быть возможность позиционировать по сетевому потоку, но я такого не нашёл.
Есть альтернативная идея. В классе HttpWebRequets есть возможность добавить диапазон скачивания AddRange. Таким образом, файл можно разделить на секторы (кусочки). Состояние, закачан сектор или нет, можно сохранять в битовой карте. Для скорости сделать закачку многопоточной, чтобы одновременно запрашивались несколько секторов. Размер сектора выбирается как размер который не страшно потерять при обрыве. Хотя можно и для недокачанного сектора сохранять состояние.
Написал тривиальный пример от балды, т.к. студии нет.
Код

public void DownloadFileSection(Uri uri, int beginPos, int endPos, String destFile)
{
    HttpWebRequest wreq = (HttpWebRequest)WebRequest.Create(uri);

    // Добавлям в запрос откуда и до куда качать
    wreq.AddRange(beginPos, endPos);

    WebResponse wres = wreq.GetResponse();
    Stream stream = wres.GetResponseStream();
    using (FileStream fstream = new FileStream(destFile, FileMode.Create, FileAccess.Write, FileShare.None))
    {
            int b;
            while ((b = stream.ReadByte()) != -1)
                fstream.WriteByte((byte)b);
    }
}


Добавлено @ 18:11 
Вот ещё. Позиционировать по файлу, чтобы сохранять секторы, можно с помощью метода Seek класса FileStream.
PM WWW   Вверх
Gregorian
Дата 13.1.2007, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



awers, не понял, что вы имеете в виду? Я об Апаче не имею представления и как хедеры посмотреть тоже не знаю.

Ch0bits, сложновато оказывается... Спасибо за идею!

Другие предложения принимаются.
--------------------
Вступил на путь доморощенного жабиста дилетанта! 
PM MAIL   Вверх
Stepan_Lameroff
Дата 13.1.2007, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




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


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

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