2

我已经在 Google App Engine 官方网站上搜索并阅读了有关 BlobStore 的文档,但仍有一些我不明白的问题。我的平台是 webapp。

我读过的文件:

在阅读了所有这些文档后,我仍然有一些问题:

  1. Blobstore Python API 概述中它说:应用程序可以通过一次 API 调用读取的 Blobstore 数据的最大大小为 1MB。这是什么意思?此 1MB 限制是否适用于sendblob()?以webapp Blobstore Handlers中的以下代码为例:

    class ViewPhotoHandler(blobstore_handlers.BlobstoreDownloadHandler):
        def get(self, photo_key):
            self.send_blob(photo_key)
    

    这是否意味着与 关联的照片(上传并存储在 blobstore 中)photo_key必须小于 1MB?从上下文来看,我不这么认为。我认为照片可以大到 2GB。但我不确定。

  2. ContentType 是如何确定的send_blob()?是文本/html 还是图像/jpeg?我可以自己设置它吗?以下来自webapp Blobstore Handlers的解释令人困惑。对于不会说英语的人来说相当困难。有人可以用代码示例来解释它吗?文档在哪里send_blob()?我找不到它。

    send_blob() 方法接受一个 save_as 参数,该参数确定 blob 数据是作为原始响应数据还是作为带有文件名的 MIME 附件发送,这会提示 Web 浏览器使用给定名称保存文件而不是显示它。如果参数的值是字符串,则 blob 作为附件发送,字符串值用作文件名。如果 True 且 blob_key_or_info 是 BlobInfo 对象,则使用该对象的文件名。默认情况下,blob 数据作为响应正文发送,而不是作为 MIME 附件发送。

  3. 有一个文件http://www.example.com/example.avi是 20MB 甚至 2GB。我想从互联网上获取 example.avi 并将其存储在 BlobStore 中。我检查了,urlfetch请求大小限制为 1MB。我搜索并没有找到解决方案。

非常感谢!

4

1 回答 1

2
  1. send_blob()不涉及您的应用程序从 API 读取文件,因此 1MB 限制不适用。向用户返回响应的前端服务将读取整个 blob 并在响应中返回所有 blob(它很可能以块的形式进行读取,但这是一个您不必担心的实现细节。

  2. send_blob()将内容类型设置为 Blob 的内部存储类型,或使用可选content_type参数指定的类型为send_blob(). 对于文档,似乎需要RTFS;有一个文档字符串(在google.appengine.ext.webapp.blobstore_handlers包中。)

  3. 从网络上获取任意文件并将它们存储在 Blobstore 中确实没有很好的解决方案。您很可能需要在其他地方运行的服务(例如您自己的机器或 EC2 实例)来获取文件并将它们发布到应用程序中的 blobstore 处理程序。

于 2011-07-04T21:38:52.550 回答