我有一个表单,在文本字段之间包含一个用于上传图片的元素。
我想将 blob 存储在 blobstore 中,并在我的模型 ( ndb.Model
) 中使用ndb.BlobKeyProperty()
. 此链接
中显示的方法使用了一个上传处理程序 ( ),该处理程序是从以这种方式创建的链接调用的:UploadHandler
upload_url = blobstore.create_upload_url('/upload')
upload_url
是为上传 Blob 而创建的页面中的表单操作。但是,我的表单包含UploadHandler
post 方法中未处理的其他字段。我找到的临时解决方案是为我的表单创建一个处理程序,该处理程序继承自我的 BaseHandler 和 BlobstoreUploadHandler:
class EditProfile(blobstore_handlers.BlobstoreUploadHandler, BaseHandler)
def get(self):
params['upload_url'] = blobstore.create_upload_url('/upload_blob1')
... fields ...
def post(self):
upload_blob = self.get_uploads()
blob_key = upload_blob[0].key()
value_field1 = self.request.POST.get('field1')
value_field2 = self.request.POST.get('field2')
value_field3 = self.request.POST.get('field3')
...
此方法有效,除了我必须main.py
为每个要上传 blob 的页面定义一个新的处理程序:
app = webapp2.WSGIApplication([ ('/upload_blob1', handlers.EditProfile),
('/upload_blob2', handlers.EditBlob2Handler),
('/serve/([^/]+)?', handlers.ServeHandler) ],
debug=os.environ['SERVER_SOFTWARE'].startswith('Dev'), config=webapp2_config)
问题:如何使用UploadHandler
从不同页面调用的单个上传处理程序(例如:)来执行上传 blob 任务?我知道这对于经验丰富的 GAE 程序员来说可能非常简单,但我还没有找到解决方案。