我正在 Google App Engine 上用 Python 制作一个邮件应用程序。
我想在“普通”网页(发布到 RequestHandler)中启用附件上传(发布到 BlobstoreUploadHandler)。
如果用户已经填写了“正常”表单的一部分,那么在用户上传他(或她)的附件(除了在提交帖子之前使用 javascript 复制所有字段之外)之后,我如何保留这些值?
我正在 Google App Engine 上用 Python 制作一个邮件应用程序。
我想在“普通”网页(发布到 RequestHandler)中启用附件上传(发布到 BlobstoreUploadHandler)。
如果用户已经填写了“正常”表单的一部分,那么在用户上传他(或她)的附件(除了在提交帖子之前使用 javascript 复制所有字段之外)之后,我如何保留这些值?
您可以编写派生自两个类的请求处理程序:
class YourRequestHandler(BlobstoreUploadHandler, RequestHandler):
pass
我也用 webapp2 的 RequestHandlers 试过这个,它可以工作。
PS:为了防止由于用户上传的文件比您的应用程序预期的更多而导致孤立的 blob(这很容易发生,因为您无法控制用户的浏览器),我建议您按照以下几行编写您的 post 处理程序:
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)