Как загрузить изображение через API конечных точек appengine?

Я использую Endpoints Proto Datastore API. Предположим, у меня есть такой код:

Модель:

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

API:

@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? Заранее спасибо.




Ответы (1)


Сам этого не делал, но взято отсюда. Вам нужно использовать тип bytes и закодировать изображение в base64:

При использовании облачных конечных точек байты, отправляемые в BytesField, должны иметь кодировку base64.

После отправки и проверки через инфраструктуру Google API байты в кодировке base64 будут отправлены вместе с вашим классом protorpc.remote.Service и преобразованы из строки base64 в собственную строку байтов (экземпляр str) в Python.

Таким образом, вам понадобятся ваши клиенты, чтобы взять байты изображения и преобразовать их в base64.

Чтобы закодировать строку байтов как base64 в Javascript, см. Как вы можете кодировать в Base64 с помощью Javascript? Чтобы сделать то же самое в Python, просто вызовите

импортировать base64 base64.b64encode(byte_string)

person Ryan    schedule 10.02.2015
comment
Большое тебе спасибо. Будет очень полезно, если вы укажете мне на какой-нибудь пример. - person Vishnu Ashok; 10.02.2015
comment
Я понял. Большое тебе спасибо. - person Vishnu Ashok; 10.02.2015