Home > GAE > Google App Engineのデータストアから気持ちよく画像を取り出すオススメできない方法

Google App Engineのデータストアから気持ちよく画像を取り出すオススメできない方法

  • 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ちょー楽しい^^

このエントリをはてなブックマークに登録 Deliciousにブックマーク
関連のありそうなエントリ

Comments:0

Comment Form
Remember personal info

*
To prove that you're not a bot, enter this code
Anti-Spam Image

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

Home > GAE > Google App Engineのデータストアから気持ちよく画像を取り出すオススメできない方法

Twitter
Search
Feeds
Meta

Return to page top