- 2009-03-15 22:55
- GAE
普通にURIクエリを投げればよいです。
例えば。
<img src="http://gae.com/img?key=xxxxxxxxx" />これで全く問題ないんです。
でも、個人的な美的感覚の問題で、imgタグのsrcに「?」って入るのが気持ち悪いんです><
という至極個人的な嗜好を解決するサンプルです。
データストアの構造
超シンプル。
class Data(db.Model): image = db.BlobProperty() create = db.DateTimeProperty(auto_now_add=True)
こんな感じを想像しておいて下さい。
画像の取り出し
一般的な方法
冒頭で説明した一般的と思われる方法です。
class ImageHandler (webapp.RequestHandler): def get(self): key = self.request.get("key") if not key: self.error(400) #Bad Request return data = db.get(key) if not data: self.error(404) #Not Found return self.response.headers['Content-Type'] = "image/png" self.response.out.write(data.image) return
あとは、このハンドラを/imgにバインドしておけば、冒頭の方法で画像が取り出せます。
個人的な嗜好が強い方法
とりあえず「?」は気持ち悪い。
せめて、
<img src="http://gae.com/img/xxxxxxxxx" />という感じで画像を取り出したい。
そのサンプルがコレ。
class ImageHandler (webapp.RequestHandler): def get(self): list = string.split(self.request.path, '/') #splited:{gae.com, img, xxxxxxxxx} if len(list) != 3: self.error(400) #Bad Request return key = list[2] data = db.get(key) if not data: self.error(404) #Not Found return self.response.headers['Content-Type'] = "image/png" self.response.out.write(data.image) return
これで、「?」のない画像リクエストが完成!
リクエストパスを「/」でsplitして、3番目の要素を取り出してるだけ。
はっきり言って超無駄です。素人にはオススメできない><
でも個人的に満足^^
おわりに
Pythonちょー楽しい^^
関連のありそうなエントリ
- Newer: Dalvik VMのオブジェクト管理についての概要
- Older: Dalvik VMのGarbage Collection概要
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://www.adamrocker.com/blog/247/strange-way-to-get-images-from-gae-datastore.html/trackback/
- Listed below are links to weblogs that reference
- Google App Engineのデータストアから気持ちよく画像を取り出すオススメできない方法 from throw Life
