2013-07-21 55 views
0

我正在Python中使用Google App Engine,並且希望用戶能夠上傳視頻,該視頻按照其basic example正常運行,但後來我希望能夠讓用戶添加有關視頻的其他信息,例如標題和類別以及正在上傳的摘要。有什麼辦法可以使上傳異步,以便用戶不必等待視頻上傳的整個時間?將視頻上傳到GAE Blobstore並在上傳時獲取輸入

我知道create_upload_url_async()方法,但不會做我想要的。

現在我有以下哪些上傳和服務,但我想做一箇中間步驟,用戶可以在UploadHandler上傳信息的同一屏幕上添加信息。

class VideoHandler(BlogHandler): 
    def get(self):  
     user = self.get_user() 
     upload_url = blobstore.create_upload_url('/uploadingvideo') 
     self.render('videohandler.html', user=user, upload_url=upload_url) 

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler): 
    def post(self): 
    upload_files = self.get_uploads('file') # 'file' is file upload field in the form 
    blob_info = upload_files[0] 
    self.redirect('/serve/%s' % blob_info.key()) 

class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler): 
    def get(self, blob_key): 
     blob_key = str(urllib.unquote(blob_key)) 
     if not blobstore.get(blob_key): 
      self.error(404) 
     else: 
      self.send_blob(blobstore.BlobInfo.get(blob_key)) 

如果您需要它,我很樂意提供更多信息。

回答

0

這一直困擾我太clifgray。解決方案是圍繞blob表單構建您的表單。

這裏是谷歌的如何提交數據到blob商店的例子。

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler): 
    def post(self): 
    upload_files = self.get_uploads('file') # 'file' is file upload field in the form 
    blob_info = upload_files[0] 
    self.redirect('/serve/%s' % blob_info.key()) 

只需刪除代碼底部的自重定向位並添加一些代碼來處理您的表單。

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler): 
    def post(self): 
    upload_files = self.get_uploads('file') # 'file' is file upload field in the form 
    blob_info = upload_files[0] 

greeting = Greeting() 

if users.get_current_user(): 
greeting.author = users.get_current_user() 
greeting.video = str(blob_info.key()) 
greeting.content = self.request.get('content') 
greeting.put() 

你在你的Django模板的形式應該是這個樣子:

form action="{{ upload_url }}" enctype="multipart/form-data" method="post"> 

textarea name="content" placeholder="write something about this video.." tabindex="1" rows="2" cols="40"></textarea> 

input name="file" type="file" > 

input name="submit" type="submit" value="Submit" /> 

/form> 

有你有它。希望這可以幫助