Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将存储在S3上的文件流式传输到客户端,而无需将其下载到flask服务器_Javascript_Amazon S3_Flask_Audio Streaming - Fatal编程技术网

Javascript 将存储在S3上的文件流式传输到客户端,而无需将其下载到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')

我有一个与S3通信的服务器,我想在不将mp3文件下载到服务器的情况下将其提供给客户端浏览器。这些文件需要经过身份验证的用户才能访问,因此它们都是私有的。 我也不确定这类功能是专门放在服务器代码上还是可以通过一些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文件的直接链接的客户端应用程序。S3文件在烧瓶中代理是一种非常缓慢和糟糕的方法。

请更具体地回答您的问题,告诉我们您使用了什么代码,出现了什么错误,等等,请指定一个URL并执行302重定向。感谢您的到来,这看起来很有效。如果有人好奇,我用这个作为参考,谢谢,很好。但是,此解决方案可能不适用于涉及敏感数据的用例,其中需要用户级访问控制和日志记录。