Я хочу транслировать и скачивать файл, используя aiohttp
. Chrome может поддерживать возможность возобновления ссылки для скачивания, но менеджер загрузки не может загрузить файл с возможностью возобновления.
В приведенном ниже коде я использовал фреймворк aiohttp для потоковой передачи и загрузки файла, я также установил заголовокпараметр ('Accept-Ranges') для поддержки возможности возобновления.
from telethon import TelegramClient, events
client = TelegramClient(name, api_id,api_hash)
@routes.get('/{userid}/{msgid}')
async def handle(request):
...
response = web.StreamResponse(
status=200,
reason='OK',
headers={
'Content-Type': content_type,
'Content-Length':str(file_size),
'Accept-Ranges': 'bytes',
'Connection': 'keep-alive',
}
)
await response.prepare(request)
async for chunk in client.iter_download(msg.media, chunk_size=512):
await response.write(chunk)
return response
app = web.Application()
app.add_routes(routes)
web.run_app(app,host='0.0.0.0')
Когда ссылка на скачивание нажата в браузере, файл хорошо транслируется. Возможность возобновления хорошо поддерживается в Chrome, я ожидаю, что менеджер загрузок будет хорошо поддерживать возможность возобновления, но после того, как пауза достигает и начинает загрузку снова, диспетчер загрузки не может продолжить загрузку и требует, чтобы пользователь перезапустил загрузку. В сообщении IDM
указано: «При попытке возобновить загрузку интернет-менеджер загрузки получил от сервера ответ о том, что он не поддерживает возобновление загрузки ...»