Я хочу, чтобы пользователь мог загружать изображения в Google App Engine. У меня есть следующие (Python):Google App Engine (Python) - Загрузка файла (изображения)
class ImageData(ndb.Model):
name = ndb.StringProperty(indexed=False)
image = ndb.BlobProperty()
информация представлена пользователем с помощью формы (HTML):
<form name = "input" action = "/register" method = "post">
name: <input type = "text" name = "name">
image: <input type = "file" name = "image">
</form>
, который затем обрабатывается:
class AddProduct(webapp2.RequestHandler):
def post(self):
imagedata = ImageData(parent=image_key(image_name))
imagedata.name = self.request.get('name')
imagedata.image = self.request.get('image')
imagedata.put()
Однако, когда я пытаюсь загрузить изображение, скажем, «Book.png», я получаю сообщение об ошибке: BadValueError: Expected str, got u'Book.png'
Любая идея, что происходит? Я работаю с GAE в течение некоторого времени, но это первый раз, когда я должен был использовать blobs.
Я использовал эту ссылку: https://developers.google.com/appengine/docs/python/images/usingimages который использует db, а не ndb. Я также попытался сохранения изображения в переменной первой, как в ссылке: storedInfo = self.request.get('image')
, а затем хранить его: imagedata.image = ndb.Blob(storedInfo)
что и дает мне ошибку: AttributeError: 'module' object has no attribute 'Blob'
Спасибо заранее.
ошибка говорит вам, что вы» re пытается установить объект Unicode как значение blob, которое в этом случае, по-видимому, является именем файла, а не самими данными файла (я не уверен, как t o получить необработанные данные как str в webapp2, так что просто разместите в качестве комментария) – geoffspear
по какой-либо причине вы не используете apb blobstore, чем хранилище данных? https://developers.google.com/appengine/docs/python/blobstore/#Python_Uploading_a_blob – Faisal
Спасибо, Wooble, но что бы вы предложили мне сделать? И Faisal, я не использую его, потому что ему нужен db (я использую ndb) и webapp (я использую webapp2). – Albraa