Как загрузить только маленькую часть большого файла в Delphi? (например, менеджер загрузок)
Например, предположим, что я хочу получить первые 300 байт текстового файла размером 100 МБ по HTTP.
Как загрузить только маленькую часть большого файла в Delphi? (например, менеджер загрузок)
Например, предположим, что я хочу получить первые 300 байт текстового файла размером 100 МБ по HTTP.
получение первых 300 байт файла размером 100 МБ.
Используя библиотеку WinInet, вы можете указать в параметрах, сколько байтов от начала файла вам действительно нужно.
http://msdn.microsoft.com/en-us/library/windows/desktop/aa385103.aspx
Если вам позже понадобится какой-то промежуточный фрагмент, вы можете изучить сторонние библиотеки. С этими библиотеками вам необходимо установить заголовок HTTP-запроса Range
- https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
Для http://www.overbyte.be/eng/products/ics.html, но, возможно, в источниках вы найдете его поддержку.
В http://synapse.ararat.cz/doc/help/httpsend.THTTPSend.html#RangeStart
В http://www.indyproject.org/docsite/html/TIdRequestHeaderInfo_Range.html для объекта TIdHTTP.Request
.
Однако сервер может игнорировать этот заголовок. Выбранная вами библиотека должна проверить, удалил ли сервер Content-Range
в HTTP-ответе, и сделать что-то, если это не так. Может быть, загрузить с самого начала файла или, может быть, создать исключение. Вы должны протестировать эти библиотеки и понять их поведение в таком случае.