Потоковые файлы, хранящиеся на S3, клиенту без загрузки на сервер - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть сервер, который связывается с S3, и я хочу подавать mp3-файлы в браузер клиента, не загружая их на сервер. Для доступа к файлам требуется аутентифицированный пользователь, поэтому все они являются частными. Я также не уверен, что такая функциональность находится в коде сервера или может быть реализована с помощью JS. Мой вопрос: как правильно это сделать и как?

Мой код фляги работает следующим образом:

@app.route('/audio')
def audio():

    s3 = boto_session.client("s3", region_name='us-west-2')
    file_name = 'some_file_on_s3'
    download_path = './static/' + file_name
    bucket_name = 'some_bucket'
    s3.download_file(bucket_name, file_name, download_path)

    return render_template('audio.html', file_source=file_name) 

И мой файл 'audio.html' выглядит так:

<!DOCTYPE html>
<html lang="en">

<head>
</head>

<body>
    <audio id="t-rex-roar" controls src="{{'./static/'+file_source}}">
    Your browser does not support the
    <code>audio</code> element.
    </audio>
</body>
</html>

1 Ответ

0 голосов
/ 14 сентября 2018

Вы должны вернуть клиентскому приложению прямую ссылку на файл S3, используя механизмы обмена файлами S3 . Проксирование файла S3 через Flask очень медленный и в целом плохой подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...