如何在Delphi中只下载大文件的一小部分? (如下载管理器)
例如,假设我想通过HTTP获取100MB文本文件的前300个字节。
答案 0 :(得分:3)
获取100MB文件的前300个字节。
使用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
TIdHTTP.Request
对象的http://www.indyproject.org/docsite/html/TIdRequestHeaderInfo_Range.html中有字符串属性。
但是服务器可能会忽略此标头。您选择的库应该检查服务器是否在HTTP响应中重新定义Content-Range
,如果没有则执行某些操作。也许从非常文件开始下载或者可能抛出异常。在这种情况下,您应该测试这些库并了解它们的行为。