@xesax

Как скачивать файлы с S3 хранилища?

С помощью чего можно скачивать файлы? Например, я знаю точный адрес где находится файл в S3 хранилище, хочу чтобы пользователь нажал "Скачать файл" и он сразу начинался скачиваться, я сначала скачиваю файл на сервер, а потом отдаю через FileResponse, в fastapi, но как обойти без скачивания на сервер? И сразу пользователю его отдавать.
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Взять асинхронный http-клиент, типа httpx, и отдать результат запроса к S3 в виде StreamingResponse.
@app.get('/dowload')
async def download(url: str):
    async def proxy():
        async with httpx.AsyncClient() as client:
            async with client.stream("GET", url) as r:
                async for chunk in r.aiter_bytes():
                    yield chunk
                    
    return StreamingResponse(proxy())
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Everything_is_bad
у "S3 хранилищ" обычно есть апи, которое генерирует ссылку для скачивания, вот ее и отдаешь пользователю
Ответ написан
Комментировать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы