小智 5
首先,http 服务器应该返回 Content-Length 标头。这通常意味着该文件是静态文件,如果是动态文件,例如php或jsp的结果,则可以不进行这样的分割。
然后,您可以在请求时使用http Range标头,该标头告诉服务器应该返回文件的哪一部分。有关如何设置和解析 http 头的信息,请参阅 python 文档。
为此,如果部分大小为 100k,您首先使用 Range: 0-1000000 100k 请求将获得第一个部分,并在响应中的内容长度中告诉您文件的大小,然后启动一些具有不同 Range 的线程,它将工作
要下载部分文件,只需Range像这样设置标题
req = urllib2.Request(url)
req.headers['Range'] = 'bytes=%s-%s' % (start, end)
f = urllib2.urlopen(req)
Run Code Online (Sandbox Code Playgroud)
但并非所有服务器都支持Range标头。大多数文件共享服务都没有。