2

我使用 response.out 从我的应用程序提供 mp3 文件,它似乎可以工作,但是如果该文件在 html5 脚本中使用或只是在带有插件的 Web 浏览器中播放,则 mp3 文件第一次可以正常播放,但如果我试着倒带再玩一遍,它不再起作用了。

如果我将相同的文件作为静态文件,那么一切正常。

这是我从 response.out 提供的文件的 url(它只播放第一次,没有倒带)

http://traki.eledit.net/media/ps/101_4.mp3

这是用作静态页面的同一文件的 url(这总是有效的)

http://traki.eledit.net/static/test2.mp3

下载两个文件时,它们是相同的。

当我检查两个文件的 http 标头时,我也得到几乎相同的结果:

http://www.webconfs.com/http-header-check.php?url=http://traki.eledit.net/media/ps/101_4.mp3&submit=submit

http://www.webconfs.com/http-header-check.php?url=http://traki.eledit.net/static/test2.mp3&submit=submit

有谁知道为什么这两个文件的行为不同?我还应该怎么做才能使使用 response.out 服务的文件的行为方式与作为静态页面的文件相同?

4

2 回答 2

1

当您倒带或搜索时,您的浏览器似乎正在尝试向您的应用发送范围请求,而您的脚本并不是为处理此问题而构建的。通过检查请求日志、在每个请求中记录请求标头和/或使用浏览器的开发工具进行检查来验证这一点。

如果是这种情况,您应该检查并遵循浏览器的字节范围标头并仅返回文件的请求部分。

于 2012-07-24T05:37:07.090 回答
0

尝试更改标题以匹配静态 mp3 文件的Content-Type标题。

self.response.headers['Content-Type'] = 'audio/mpeg'
self.respone.out.write(mp3_file)
于 2012-07-23T17:01:28.880 回答