2012-08-09 41 views
3

我在couchdb数据库(与web2py无关)中有一些声音文件。我web2py应用程序可以访问这个数据库,我想流的声音文件,使他们可以用HTML音频标记被倾听,就像这样:使用web2py流式传输couchdb附件

<audio src="http://www.myserver.com/.../track06.mp3" preload="auto"></audio> 

我打算做基于此suggested example此流:

def streamer(): 
    import os 
    path=os.path.join(request.folder,'private','largefile.mpeg4') 
    return response.stream(open(path,'rb'),chunk_size=4096) 

但我有一些开放式的问题:

  1. 不在本地filesyste m,但在couchdb数据库中,可通过REST访问。我怎么能打开,为流?
  2. 声音标签被激活时发送什么样的请求,GET/POST/...?这可以用web2py来处理吗?

基本上,我想知道是否有人通过web2py流式传输couchdb附件的工作示例。

回答

1

我现在使用的解决方案是这样的:

def open_remote_recording(): 
    recording_doc_id, recording_id = tuple(request.args) 
    url = get_doc_url(server = RECORDINGS_SERVER, database = RECORDINGS_DATABASE, doc_id = recording_doc_id, attachment = recording_id) 
    content_type = 'audio/mp3' 
    f = urllib.urlopen(url) 
    return f 

@auth.requires_login() 
def recordings(): 
    f = open_remote_recording() 
    return response.stream(f, chunk_size=4096) 

get_doc_url功能只是创建一个URL来访问附件。 content_type是固定的,但是这应该从附件中获得(我还不知道如何做到这一点)。