我想通过aiohttp
框架(在python 3.7
中)流式传输媒体文件,并在IDM
中同时下载具有恢复功能的媒体文件。
给出了文件路径,并且还设置了标头。
我已使用partial content
和Content-Range
来激活IDM
文件流式传输良好,但是下载时IDM
出现问题
问题出在用IDM
下载时,我按下了Pause
按钮
我想重新启动并继续下载
但它开始从0%
下载。
这使我无法使用resume capability
中存在的完美无缺的IDM
。
我想使用IDM
下载文件,这种情况是当我按下“暂停”按钮时它会暂停下载,而当我再次按下“开始”按钮时,它会从暂停的位置继续下载。
我已使用以下代码下载和流式传输由aiohttp
框架编写的文件
@routes.get('/')
async def handle(request):
offset = 0
if 'Range' in dict(request.headers):
offset =int(hh['Range'][6:].split('-')[0])
with open(filepath, 'rb') as f:
resp = Response(status=206,
headers={'Content-Type': mimetypes.guess_type(filename)[0],
'CONTENT-LENGTH': str(file_size),
'Accept-Ranges': 'bytes',
'CONNECTION': 'keep-alive',
'Content-Range': 'bytes %d - %d/%d' % (offset, file_size, size)
},
)
data = f.read()
await resp.prepare(request)
await resp.write(data)
return resp
app = web.Application()
app.add_routes(routes)
web.run_app(app,host='0.0.0.0')