2009年5月7日木曜日

GAEにデータを保存


すでにこの設定などは古くなっている可能性があります。

Slim3の開発はこんなブログより正式ドキュメントが有効です。
Slim3サイト
非公式と言われていますが充実した日本語サイトもあります。
Slim3日本語サイト



さて、Slim3を手に入れ、Strutsでアップロードを可能にした私は
ついにデータを保存するということに挑戦。
っていうか簡単なんですけどね。

単純にBlobデータを使いました。
ファイルをアップロードして
FormFileからInputStreamを取り出して
ByteArrayOutputStreamを利用して

  1. ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  2. InputStream stream = aFile.getInputStream();  
  3. byte[] buffer = new byte[8192];  
  4. //終了まで読み込み続ける  
  5. while (stream.read(buffer) != -1) {  
  6.  baos.write(buffer);  
  7. }  
  8. Blob imageBlob = new Blob(baos.toByteArray());  


[com.google.appengine.api.datastore.Blob]ですね。
を生成します。

これをJDOで永続化してBigTableに保存します。

でそれを検索して

  1. Image image = getPersistentImage(Long.valueOf(shopId),Long.valueOf(imageId));  
  2. Blob blob = image.getImage();  
  3. rtnByte = blob.getBytes();  


※ImageってのはBlobを保存したパーシスタントクラスです。

取得します。
これをストリームに描きだしたりすると画像が出ます!

Blobを見た時からこれをやりたかったんですけどね。
Slim3の力を借りてここまでたどり着きました!

0 件のコメント: