我创建了一个类似这样的请求对象:
obj.mp3 = requests.get('http://foo.com/bar.mp3', stream=True)
我曾以为只需要将obj.mp3
对象输入任何期望文件或URI的音频播放器中,但很明显这种想法是错误的:没有任何声音出现。以下是完整代码:
#views.py
class ArticleDetailView(DetailView):
model = Article
template_name = 'song.html'
def get_object(self):
obj = super(ArticleDetailView, self).get_object()
#code to store mp3 url in obj.mp3 and other stuff
if obj.mp3:
obj.mp3 = requests.get(obj.mp3, stream=True).content
return obj
#song.html
<div class="audio">
<audio src={{ article.mp3 }} type="audio/mpeg">
</div>
什么是处理来自requests
的返回结果,以便我可以使用播放器流式传输的正确方式?我知道至少我可以将 obj.mp3
写入文件,然后只需将播放器指向文件位置,但我正在尝试避免将文件写入磁盘。谢谢。
Response.raw
不会像此处所述一样尊重传输编码。因此,使用raw
可能会根据 Web 服务器而有所不同。 - JojOatXGMEresp.raw.decode_content = True
来解决这个问题。 - JojOatXGME