Desidero che l'utente sia in grado di caricare immagini su Google App Engine. Ho il seguente (Python):Google App Engine (Python) - Caricamento di un file (immagine)
class ImageData(ndb.Model):
name = ndb.StringProperty(indexed=False)
image = ndb.BlobProperty()
informazioni è presentata dall'utente utilizzando un modulo (HTML):
<form name = "input" action = "/register" method = "post">
name: <input type = "text" name = "name">
image: <input type = "file" name = "image">
</form>
che viene poi elaborato da:
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()
Tuttavia, quando provo a caricare un'immagine, diciamo "Book.png", ho ricevuto l'errore: BadValueError: Expected str, got u'Book.png'
Qualche idea su cosa sta succedendo? Ho lavorato con GAE per un po 'di tempo, ma questa è la prima volta che ho dovuto usare BLOB.
Ho utilizzato questo collegamento: https://developers.google.com/appengine/docs/python/images/usingimages che utilizza db, non ndb. Ho provato anche memorizzare l'immagine in una variabile prima come nel link: storedInfo = self.request.get('image')
e poi riporlo: imagedata.image = ndb.Blob(storedInfo)
Il che mi dà anche un errore: AttributeError: 'module' object has no attribute 'Blob'
Grazie in anticipo.
L'errore che si sta dicendo che si' cercando di impostare un oggetto Unicode come valore di un blob, che in questo caso sembra essere il nome del file, non i dati del file stesso. (Non so come o ottenere i dati grezzi come una str in webapp2, quindi semplicemente postare come commento) – geoffspear
qualsiasi motivo per cui non si sta utilizzando l'API blobstore di datastore? https://developers.google.com/appengine/docs/python/blobstore/#Python_Uploading_a_blob – Faisal
Grazie Wooble, ma cosa suggeriresti di fare? E Faisal, non lo sto usando perché ha bisogno di db (sto usando ndb) e webapp (sto usando webapp2). – Albraa