2013-07-21 42 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> 

有你有它。希望这可以帮助