通常,从服务器下载文件是这样的:
fp = open(file, 'wb')
req = urllib2.urlopen(url)
for line in req:
fp.write(line)
fp.close()
在下载过程中,只需完成下载过程即可。如果进程停止或中断,则下载进程需要重新开始。所以,我想让我的程序暂停和恢复下载,我该如何实现呢?谢谢。
最佳答案
Web 服务器必须支持 Range
请求 header 以允许暂停/恢复下载:
Range: <unit>=<range-start>-<range-end>
如果他/她想要检索指定的字节,则客户端可以使用 Range
header 发出请求,例如:
Range: bytes=0-1024
在这种情况下,服务器可以用 200 OK
进行响应,表明它不支持 Range
请求,
或者它可以像这样用 206 Partial Content
响应:
HTTP/1.1 206 Partial Content
Accept-Ranges: bytes
Content-Length: 1024
Content-Range: bytes 64-512/1024
Response body.... till 512th byte of the file
参见:
关于python - 如何 `pause` 和 `resume` 下载工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12243997/