2014/11/12

[Google App Engine][Python]ndbを使ってimageデータを保存

今度、リリースするiOSアプリには、ndbを使うかなと思うのだが、その際に、imageの保存について確認する。

HTMLは、下のような感じで用意する。

<form action="" method="POST" enctype="multipart/form-data">
  <input type="file" name="image_file" value="ファイルを選択">
  <input type="submit" value="送信">
</form>
Python側のmodelを以下のように設定
class ImageDataStore(ndb.Model):
  image_data = ndb.BlobProperty()
送信されたときに処理を行うクラスをMainPageとすると下のようになる
class MainPage(webapp2.RequestHandler):
    def post(self):
        image_file = self.request.get('image_file')
        imagedatastore = ImageDataStore()
        imagedatastore.image_data = image_file
        imagedatastore.put()
dbの場合だと、db.Blob(image_data)という形にして保存する必要があったのですが、その必要がなさそうです。

取り出す時は、
imagedatastore = ImageDataStore()
self.response.write(imagedatastore.image_data)
という形で、無事に画像を表示することができた。
これもdbの場合、
from google.appengine.api import images
imagedatastore = ImageDataStore()
img = images.Image(imagedatastore.image_data)
self.response.write(img)
としなくちゃいけなかったんだけど。

今回は、htmlから送信した場合にうまくいったけど、果たして、iOSからだとうまくいくのだろうか?
検証は続く。

0 コメント:

コメントを投稿