0

我正在使用 Endpoints Proto Datastore API。假设我有这样的代码:

模型 :

class MyModel(EndpointsModel):
  _message_fields_schema = ('name', 'image')
  name = ndb.StringProperty()
  image = ndb.BlobProperty()

接口:

@endpoints.api(name='myapi', version='v1', description='my api')
class MyApi(remote.Service):

@MyModel.method(name='mymodel.insert', path='mymodel')
def insert_mymodel(self, data):
    data.put()
    return data

如何通过 api 将图像上传到数据存储区?先感谢您。

4

1 回答 1

1

自己没有做过,而是从这里拿来的。您需要使用 bytes 类型并将图像编码为 base64:

使用 Cloud Endpoints 时,发送到 BytesField 的字节必须经过 base64 编码。

在通过 Google 的 API 基础架构发送和验证后,base64 编码字节将被发送到您的 protorpc.remote.Service 类,并在 Python 中从 base64 字符串转换为本机字节字符串(str 的实例)。

因此,您需要您的客户获取图像字节并将它们转换为 base64。

要在 Javascript 中将字节字符串编码为 base64,请参阅 How can you encode to Base64 using Javascript?,要在 Python 中执行相同操作,只需调用

导入 base64 base64.b64encode(byte_string)

于 2015-02-10T15:09:18.823 回答