我使用response.out从我的应用程序提供mp3文件,它似乎工作,但如果该文件用于html5脚本或只是在带有插件的Web浏览器中播放,则mp3文件第一次正常播放,但如果我尝试倒回并再次播放它,它就不再起作用了。
如果我将相同的文件作为静态文件,那么一切正常。
这是我从response.out提供的文件的网址(它只播放第一次,没有倒带)
http://traki.eledit.net/media/ps/101_4.mp3
这是同一个文件的URL作为静态页面(这总是有效)
http://traki.eledit.net/static/test2.mp3
当两个文件都被下载时,它们是相同的。
当我检查两个文件的http标头时,我也得到几乎相同的结果:
有没有人知道为什么这两个文件的行为不同?我还应该做些什么,以便使用response.out提供的文件与用作静态页面的文件的行为方式相同?
答案 0 :(得分:1)
您的浏览器似乎可能在您回放或搜索时尝试向您的应用发送范围请求,而您的脚本不是为处理此问题而构建的。通过检查请求日志,在每个请求中记录请求标头和/或使用浏览器的开发工具进行检查来验证这一点。
如果情况确实如此,则应检查并遵循浏览器的字节范围标题,并仅返回文件的请求部分。
答案 1 :(得分:0)
尝试更改标题以匹配静态mp3文件的Content-Type
标题。
self.response.headers['Content-Type'] = 'audio/mpeg'
self.respone.out.write(mp3_file)