使用BlobStore和Endpoints将图像上载到Appengine Datastore

时间:2014-11-15 18:05:51

标签: python google-app-engine endpoints-proto-datastore

如何使用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。

1 个答案:

答案 0 :(得分:3)

我无法通过只是端点找到一种方法;我必须有一个带有part-endpoints应用程序的混合服务器,part-webapp2 blobstore_handlers应用程序。如果你按照这些部分的Blobstore上传示例使用webapp2的东西,它就可以了。例如,流程应为:

  1. 客户端请求上传网址(使用端点进行此次通话,并拥有 它基本上都是blobstore.create_upload_url(PATH)
  2. 客户端上传 图像到给定的URL,由您的。处理 blobstore_handlers.BlobstoreUploadHandler方法,它拉出来 上传并转储blob_info.key()(例如,以JSON格式)
  3. 客户端调用createProduct或其他任何东西,然后传回 它刚收到的blobkey以及你的其他人 ProductImage模型。您可能希望在该方法中调用get_serving_url并将其存储在模型中,以后不应该更改。
  4. 客户可以使用该藏匿的服务网址查看图片。
  5. 我也有很多" 有趣"使用BlobKeyProperty。在开发部署中,一切正常,但在生产中,我在存储的blobkey上调用get_serving_url()时会出现无效的图像错误。我认为这可能是由于blob实际上不是位图,并且开发不关心。