0

我在 Python 中使用 Google App Engine,我希望用户能够上传视频,该视频通过遵循他们的基本示例可以正常运行,但随后我希望能够让用户添加有关视频的其他信息,例如上传时的标题和类别以及摘要。有什么办法可以使上传异步,以便用户不必等待整个视频上传?

我知道 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))

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

4

1 回答 1

0

这一直困扰着我很多太克利夫格雷。解决方案是围绕 blob 表单构建表单。

这是 google 关于如何向 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>

你有它。希望这可以帮助

于 2013-11-16T19:54:14.953 回答