|
||||||||||||||||||||||
|
Google App Engine でのファイルアップロード ~ ブロブキーの取得Blob = アップロードファイルはこうして操作する Google App Engine ではアップロードしたファイルはブロブストア (blobstore) 内に、ファイル一つ一つがブロブ (blob) として格納されるということは、 「Google App Engine でのファイルアップロード」で説明しました。まだ読んでないのでしたら、目を通しておいてください。 さて、createUploadUrl メソッドで取得した URL にファイルをアップロードした後、どのようにファイルを扱えば良いのでしょうか。 ブロブストアサービスではブロブキーを元にブロブそのものを操作できるブロブストアサービスでは、文字通りブロブキーをブロブのキーとしてブロブを操作します。 例えば、あるブロブを削除するなら、そのブロブのブロブキーを BlobstoreService の delete メソッドに渡せばよいのです。 ちなみに、ブロブサービスのインスタンスはブロブサービスファクトリ (BlobstoreServiceFactory) の getBlobstoreService メソッドで取得します。 getUploadedBlobs メソッドでブロブキーを取得できるでは、どうやってブロブキーを取得するかというとこれは簡単です。 ファイルをアップロードした後、フォワード先のプログラムでは次のようにすることで、ブロブキーを取得できます。 サーブレットのコード全体を示します。 import java.io.IOException; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.appengine.api.blobstore.BlobKey; import com.google.appengine.api.blobstore.BlobstoreService; import com.google.appengine.api.blobstore.BlobstoreServiceFactory; @SuppressWarnings("serial") public class FileUploadServlet extends HttpServlet { private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(request); BlobKey blobKey = blobs.get("file1"); response.sendRedirect( "/blobinfo.jsp?blobkey=" + blobKey.getKeyString()); } } ポイントは次の箇所です。 Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(request); BlobKey blobKey = blobs.get("file1"); このように getUploadedBlobs メソッドによって、文字列をキーとして BlobKey を値とするコレクション (マップ) を取得できます。 キーは HTML の input タグに記載した name です。 このように簡単にブロブキーが取得できます。 尚、アップロードファイルが画像である場合は、画像サービス (image service)を利用するとブロブから直接画像を提供する URL を取得できたりして便利です。 |
|
||||||||||||||||||||
|
© 2010-2011 Google App Engine 入門 |
||||||||||||||||||||||