【发布时间】:2011-06-13 08:43:01
【问题描述】:
我正在尝试将表单中的多个文件上传到 BlobStore。
表格:
<form action="{{upload_url}}" method="POST" enctype="multipart/form-data">
<label>Key Name</label><input type="text" name="key_name" size="50"><br/>
<label>name</label><input type="text" name="name" size="50"><br/>
<label>image</label><input type="file" name="image" size="50"><br/>
<label>thumb</label><input type="file" name="thumb" size="50"><br/>
<input type="submit" name="submit" value="Submit">
</form>
然后我尝试为每个上传的文件获取 BlobInfo 对象:
def post(self):
image_upload_files = self.get_uploads('image')
thumb_upload_files = self.get_uploads('thumb')
image_blob_info = image_upload_files[0]
thumb_blob_info = thumb_upload_files[0]
我看到一些奇怪的行为。这两个文件都进入了 BlobStore,但我不知道如何获取密钥以便我可以将它们存储在另一个实体上。上面的代码设法获得了 image_blob_info 的密钥,但没有获得 thumb_blob_info 的密钥。我不明白如何使用 get_uploads。我想通过表单传递多个文件,然后按名称获取它们,以便我可以将它们存储在另一个实体上的适当 BlobReferenceProperties 中。
【问题讨论】:
-
我最终做的是创建两个 upload_url 变量,因为我只需要一次上传两个文件。如果你有n个文件要上传,Karl引用的解决方案很好(但实现起来并不容易)。
-
您要求用户上传缩略图是有原因的吗?您是否知道 get_serving_url,它可以让您从全尺寸图像生成缩略图?
-
这是一个管理页面,作为 BlobStore 仅支持表单 POST(您不能以编程方式存储 url)这一事实的解决方法。话虽如此,我不知道get_serving_url。那是 BlobStore 的一部分吗?
-
我一直在努力让 plupload 人员在每次上传发生一段时间之前支持异步工作。我们快要到了。关注github.com/moxiecode/plupload/issues/issue/73
标签: python google-app-engine forms google-cloud-datastore blobstore