0

如何使用 blobStore 将文件/图像上传到 Appengine 数据存储区?我正在使用 Google Cloud Endpoints。

这是我的模型:

class ProductImage(EndpointsModel):
    _message_fields_schema = ('product', 'enable', 'image')
    product = ndb.KeyProperty(Product)
    image = ndb.BlobKeyProperty(required=True)
    enable = ndb.BooleanProperty(default=True)

如何从 API Explorer 测试它?在前端,我使用的是 AngularJS。

4

1 回答 1

3

我想不出用端点来做到这一点的方法;我必须有一个带有部分端点应用程序、部分 webapp2 blobstore_handlers 应用程序的混合服务器。如果您按照 Blobstore 上传示例为这些部分使用 webapp2 的东西,它就可以工作。例如,流程应该是:

  1. 客户端请求上传 URL(使用 Endpoints 进行此调用,并让它基本上执行 blobstore.create_upload_url(PATH)
  2. 客户端将图像上传到给定的 URL,该 URL 由您的 blobstore_handlers.BlobstoreUploadHandler 方法处理,该方法提取上传并转储 blob_info.key()(例如,在 JSON 中)
  3. 客户端调用 createProduct 或其他任何东西,一个 Endpoint,并将刚刚收到的 blobkey 以及 ProductImage 模型的其余部分传回。您可能想在该方法中调用 get_serving_url 并将其存储在您的模型中,以后不应更改。
  4. 然后,客户端可以使用该隐藏的服务 url 来查看图像。

此外,我对 BlobKeyProperty有很多“乐趣”。在开发部署中,一切正常,但在“生产”中,在存储的 blobkey 上调用 get_serving_url() 时会出现无效图像错误。我认为这可能是由于 blob 实际上不是位图,而开发人员不在乎。

于 2015-02-04T01:03:06.597 回答