2012-08-09 43 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是固定的,但是這應該從附件中獲得(我還不知道如何做到這一點)。