GAE:如何在1个网页中组合Blobstore上传处理程序和RequestHandler

时间:2013-05-20 19:05:05

标签: python google-app-engine blobstore requesthandler

我正在使用Google App Engine上的Python制作邮件应用程序。

我想在“普通”网页中启用附件上传(发布到BlobstoreUploadHandler)(发布到RequestHandler)。

如果用户填写了“普通”表单的一部分,如何在用户上传(或她)附件后保留这些值(除了在提交帖子之前用javascript复制所有字段)?

1 个答案:

答案 0 :(得分:2)

您可以编写一个派生自两个类的请求处理程序:

class YourRequestHandler(BlobstoreUploadHandler, RequestHandler):
    pass

我也尝试过使用webapp2的RequestHandlers,它可以正常工作。

PS:为了防止孤立的blob,因为用户上传的文件超出了你的应用程序所期望的数量(这很容易发生,因为你无法控制用户的浏览器),我建议你写下你的帖子处理程序。以下几行:

def post(self):
    uploads = self.get_uploads()
    try:
        pass  # Put your application-specific code here.
        # As soon as you have stored a blob key in the database (using a transaction),
        # remove the corresponding upload from the uploads array.
    finally:
        keys = [upload.key() for upload in uploads]
        blobstore.delete_multi(keys)