javascript - 将存储在 S3 上的文件流式传输到客户端,而无需将其下载到 Flask 服务器

标签 javascript amazon-s3 flask audio-streaming

我有一个与 S3 通信的服务器,我想将 mp3 文件提供给客户端的浏览器而不将它们下载到服务器。这些文件需要经过身份验证的用户才能访问它们,因此它们都是私有(private)的。 我也不确定这种功能是专门位于服务器代码上还是可以通过某些 JS 来完成。 我的问题是这样做的正确方法是什么以及如何做?

我的 flask 代码基本上是这样工作的:

@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>

最佳答案

您应该使用 S3 file sharing mechanisms 向客户端应用程序返回指向 S3 文件的直接链接。 .通过 Flask 代理 S3 文件是非常缓慢且整体上很糟糕的方法。

关于javascript - 将存储在 S3 上的文件流式传输到客户端,而无需将其下载到 Flask 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52322925/

相关文章:

android - 在 Android 应用程序中使用什么类型的视频托管服务?

python - 自动将数据从 s3 批量加载到 Aurora MySQL RDS 实例

python - 用 DispatcherMiddleware 包裹的 Flask 应用不再有 test_client

python - Peewee 的 Flask 仅在重新启动时获取新数据

javascript - 如何使用 JS 或 CSS 将 TABLE 转为圆 Angular ?

javascript - Firebase 和 Algolia 确保搜索没有搜索命中

javascript - 如何自定义清理字符串以使其适合 URL?

java - 获取不存在的对象时状态代码 : 403,

python - Flask-login 不重定向到上一页

javascript - 点击带有条形图的 Chartist url - javascript