2010-05-20 118 views
1

我有一个本地运行的lighttpd服务器。如果我在服务器上加载一个静态文件(通过html5音频标签),它播放和寻求罚款。寻求不使用HTML5音频标记

但是,运行开发服务器(web.py/CherryPy)时寻找不起作用,或者如果我通过定义的动作url而不是静态文件返回字节。它也不会加载持续时间。

根据this Opera Page中的“HTTP字节范围请求”部分,这与支持字节范围请求/部分内容响应有关。内容被视为流式传输。

我不明白的是:

  • 如果浏览器下载它肯定可以显示时间整个文件,并且它肯定可以寻求。
  • 我需要在Web服务器上启用字节范围请求(对于非静态url)。

任何意见将非常感激地收到。

回答

0

谷歌告诉我你必须在CherryPy中使用字节范围的静态过滤器 - 但这只适用于静态文件。幸运的是this posting还包括有关如何做到这一点的非静态数据:-)

1

这里的指针是您获得开始有些web.py代码(正好需要这也跑进你的问题):

## experimental partial content support 
## perhaps this shouldn't be enabled by default 
range = web.ctx.env.get('HTTP_RANGE') 
if range is None: 
    return result 

total = len(result) 
_, r = range.split("=") 
partial_start, partial_end = r.split("-") 

start = int(partial_start) 

if not partial_end: 
    end = total-1 
else: 
    end = int(partial_end) 

chunksize = (end-start)+1 

web.ctx.status = "206 Partial Content" 
web.header("Content-Range", "bytes %d-%d/%d" % (start, end, total)) 
web.header("Accept-Ranges", "bytes") 
web.header("Content-Length", chunksize) 
return result[start:end+1]