Django HttpResponse到在线MP3文件

1 投票
2 回答
1447 浏览
提问于 2025-04-19 06:48

我在想有没有办法把一个在线的MP3文件(这个例子是来自亚马逊S3服务器的)进行编码,然后以Django的HttpResponse形式返回给用户。

注意,我不想使用HttpResponseRedirect,我不想直接返回亚马逊的链接,也不想让我的S3服务器公开访问。这会带来很大的安全风险。我希望我的Django服务器能充当一个“中介”,把音频流的内容提供给用户,而用户根本不需要直接和S3服务器互动。

提前感谢你的帮助。

2 个回答

0

用Django的HttpResponse来提供静态文件其实不是个好主意。
为什么不考虑设置一个Nginx代理呢?可以看看这个链接了解更多信息: https://coderwall.com/p/rlguog

2

我个人没有尝试过这个方法,但你可以通过后端获取mp3文件,然后把数据发送到HttpResponse,并设置streaming=True,这样就能正确输出文件了。

https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponse.streaming

或者使用一个可以完成这个工作的对象(正如Brian提到的)

https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.StreamingHttpResponse

撰写回答