Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Сетевые технологии > Как извлечь фрагмент файла из интернет


Автор: usp 16.9.2004, 11:53
Народ, дайте, пожалуйста, ответы на следующие вопросы:

1. Можно ли извлечь блок информации из файла в интернете
без скачивания этого файла целиком, причем, с использованием WinInet?
(Есть файл большого размера. Необходим только фрагмент в N байт,
расположенный в самом конце.)
2. Если такая возможность существует, напишите, как это сделать?

Заранее спасибо. Очень нужно.

Автор: Akina 16.9.2004, 12:59
А в чем проблема?

InternetOpenUrl - открыть файл
InternetSetFilePointer - перемотать куда надо
InternetReadFile - считать сколь надо
InternetCloseHandle - закрыть файл

Автор: DENNN 16.9.2004, 13:24
Ага, только весь вопрос по какому протоколу файл качается.
Иными словами, как будет выглядеть полный URL на ту самую закачку?

Автор: Akina 16.9.2004, 15:00
DENNN
Цитата
весь вопрос по какому протоколу файл качается
Раз клиент кивает на
Цитата
с использованием WinInet
то вероятно проблемы не будет

Автор: usp 16.9.2004, 15:22
Цитата
InternetOpenUrl - открыть файл
InternetSetFilePointer - перемотать куда надо
InternetReadFile - считать сколь надо
InternetCloseHandle - закрыть


Все это мне известно. И возможности работы только с HTTP протоколом у InternetSetFilePointer.

Как проверить поддерживает ли сервер возможность произвольного доступа к контенту?
Я полагаю от этого зависит могем мы поставить указатель файла в произвольную позицию или нет.

Автор: DENNN 16.9.2004, 16:32
Хотелось бы поподробнее услышать, как через метод GET получить только произвольный кусок ответа от сервера (автору ведь интересно именно не прокачивать лишний трафик).

Автор: MuToGeN 21.9.2004, 10:36
Можно, например, глянуть, как это делают программы-качалки (сам сейчас точно не помню)

Автор: Jin X 14.1.2005, 19:16
Офигенный ответ smile
Сдаётся мне, что можно при использовании InternetOpenURL можно указать в заголовке запроса строку типа (здесь перечислено 4 блока):
Код
Range: bytes=-50,100-200,1000-2000,10000-
p.s. Вот только сработает ли это я пока не знаю, т.к. столкнулся с проблемой: http://forum.vingrad.ru/index.php?showtopic=39758

Автор: usp 17.1.2005, 00:36
Jin X ...Вот только сработает ли это я пока не знаю...

Сработает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)