1

我有一个带有文件输入和几个文本字段的表单,我想将文件上传到 blobstore,然后处理其余的输入。我从谷歌找到了文档,但我对细节仍然很模糊。如果我有正确的想法,您首先为表单生成一个提交 url,如下所示:

 blobstore.create_upload_url('/handlerURL')

其中 handlerURL 是处理常规表单数据(如文本字段等)的请求处理程序的 url

接下来你定义一个BlobstoreUploadHandler,这就是我变得模糊的地方......从文档中我了解到BlobstoreUploadHandler上传文件的处理然后将重写的请求传递给\handlerURL. 在这里的文档中出现了我的困惑:

https://developers.google.com/appengine/docs/python/tools/webapp/blobstorehandlers

数据模型对象的实例在内部创建BlobstoreUploadHandler

但是如果我想在请求处理程序中进行额外的处理并使用来自其他字段的数据,handlerURL那么这BlobstoreUploadHandler将是空的,这是正确的还是我误解了这个过程?

4

2 回答 2

2

BlobstoreUploadHandler 只是清理多部分消息的文件上传部分,您仍然可以使用webapp以标准方式访问表单的其余字段(例如 self.request.get('some_field_in_the _form'))。

于 2012-11-10T21:59:27.337 回答
0

这确实有点棘手,因为这里涉及到两个处理程序。

  • 第一个来自 blobstore 本身。它的 URL 由 create_upload_url 调用返回。它的任务是保存文件(或文件),并用 blobkey 替换它。然后它只是将表单发布到您的主处理程序。
  • 第二个是你定义的。在您的情况下,它的 URL 是 /handlerURL。在大多数情况下,此处使用 BlobstoreUploadHandler,但并非必须如此。BlobstoreUploadHandler 使检索 blobkey 变得更容易,仅此而已。除此之外,它只是一个 webapp.RequestHandler,所以你可以在这里处理你的整个表单
于 2012-11-28T21:10:43.420 回答