Javascript 将存储在S3上的文件流式传输到客户端,而无需将其下载到flask服务器
我有一个与S3通信的服务器,我想在不将mp3文件下载到服务器的情况下将其提供给客户端浏览器。这些文件需要经过身份验证的用户才能访问,因此它们都是私有的。 我也不确定这类功能是专门放在服务器代码上还是可以通过一些JS来实现。 我的问题是什么是正确的方法,如何做到这一点 我的flask代码基本上是这样工作的:Javascript 将存储在S3上的文件流式传输到客户端,而无需将其下载到flask服务器,javascript,amazon-s3,flask,audio-streaming,Javascript,Amazon S3,Flask,Audio Streaming,我有一个与S3通信的服务器,我想在不将mp3文件下载到服务器的情况下将其提供给客户端浏览器。这些文件需要经过身份验证的用户才能访问,因此它们都是私有的。 我也不确定这类功能是专门放在服务器代码上还是可以通过一些JS来实现。 我的问题是什么是正确的方法,如何做到这一点 我的flask代码基本上是这样工作的: @app.route('/audio') def audio(): s3 = boto_session.client("s3", region_name='us-west-2')
@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文件的直接链接的客户端应用程序。S3文件在烧瓶中代理是一种非常缓慢和糟糕的方法。请更具体地回答您的问题,告诉我们您使用了什么代码,出现了什么错误,等等,请指定一个URL并执行302重定向。感谢您的到来,这看起来很有效。如果有人好奇,我用这个作为参考,谢谢,很好。但是,此解决方案可能不适用于涉及敏感数据的用例,其中需要用户级访问控制和日志记录。