以前に、本サイトにてブロブストアに画像を保存する方法について解説しました。
今回はそれに引き続き、ブロブストアに保存されている画像ファイルの情報を取得して画面に表示するための方法について解説します。
重要なポイントは以下の点です。
- BlobInfoFactoryクラスのインスタンス取得する
- queryBlobInfosメソッドでブロブストア内の情報を持ったデータのイテレータを取得する
- 取得した情報をテンプレートにバインドする
以上3点をふまえて、具体的な手順を見ていきましょう。
なお、今回もブラウザへの表示はVelocity Templateを用います。以下のリンクを参考にしてください。
それでは続きをどうぞ
ブロブストア内の情報を持ったデータ(BlobInfo)を取得する
まずは、ブロブストアに保存されている画像ファイルの情報持ったクラスのインスタンスを取得します。
画像ファイルの情報をブロブストアへ要求を行うと、BlobInfoクラスのインスタンスに情報が格納されて返されます。
ブロブストアに情報を要求するためには、まずBlobInfoFactoryクラスのインスタンスを生成する必要があります。
インスタンスを生成したら、queryBlobInfosメソッドを利用して情報を要求することで、情報(BlobInfo)をイテレータ(順次)で取得することができます。
ImageUploaderServlet.java
public class ImageUploaderServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { // ブロブストアから情報を取得するためのインスタンス取得 BlobInfoFactory blobInfoFactory = new BlobInfoFactory(); // 情報をイテレータ(順次)で取得する Iterator iterator = blobInfoFactory.queryBlobInfos(); } }
BlobInfoには、ブロブストアに格納されているファイルの情報(ファイル名やファイルサイズ、BlobKey)などの情報が格納されています。
なお、ブロブストアに情報を要求する際は、POSTメソッドではなくGETメソッドを利用します。間違えていた場合は、上手く情報が取得できません。
情報を取り出して表示する
それでは、取得したBlobInfoのイテレータから、情報を取得して表示してみます。
ここでは、ブロブストアに保存されているファイルの名前とサイズ(容量)を取得して表示してみます。
ImageUploaderServlet.java
List strList = new ArrayList(); while(iterator.hasNext()){ // 一つ一つのブロブの情報を取り出し BlobInfo blobInfo = iterator.next(); // ブロブの情報からファイル名を取得 strList.add(blobInfo.getFilename() + " : " + Long.toString(blobInfo.getSize()) + "Byte"); }
イテレータにて、BlobInfoクラスのインスタンスを一つずつ取り出していきます。(4行目)。
BlobInfoのインスタンスを取り出したら、getFilenameメソッドを用いてファイル名を、getSizeメソッドを利用してファイルのサイズをそれぞれ文字列型で取得して連結し、リストに追加しています(6行目)。
テンプレートにて表示する
あとは、リストに追加した文字列を、順番にテンプレートに表示します。
バインドの方法については以下記事でもある通り、VelocityContextクラスのインスタンスを取得し、putメソッドを利用してバインドします。
ImageUploaderServlet.javaVelocityContext vContext = new VelocityContext(); // 文字列のリストをバインド vContext.put("fileInfos", strList);テンプレートファイルの方では、foreach文を用いてループ処理を行っています。
uploader.vm(...省略...) #foreach($fileInfo in $fileInfos) $fileInfo #end$fileInfosには前述の、表示したい文字列が格納されたstrListが渡されてきます。
その中から、一つずつ文字列を取り出して表示しています。以上で、以下のようにアップロードしたファイルの情報が表示されます。
以上で、ブロブストアに保存したファイル情報の取得方法についての解説は終了です。
今回ところどころで「BlobKey」という言葉が出てきました。
BlobKeyとは、ブロブストアに格納されているファイルにそれぞれ固有に割り当てられるキー値です。BlobKeyの取得方法などについては、今後の記事にて解説していきたいと思います。