GAEでファイルをアップロードする! | sola's note

sola's note

日ごろのメモを書いていきます。何か新しいものを作るために。

GAEでファイルを使う

Google App Engine(GAE)でファイルを扱う場合、
ブロブストアというのが便利です。

GAEではデータベースの代わりにデータストアというものを使いますが、
このデータストアで扱えないような大きめのデータを扱いたい時にブロブストアというのが使えます。

やり方は簡単で、
ファイルを送付するフォームと、中継するサーブレットを用意するだけです。

1.ブロブストアサービスのインスタンス生成
BlobstoreService blobstoreService
    = BlobstoreServiceFactory.getBlobstoreService();

2.(1.)のインスタンスからアップロード用URL生成
String uploadUrl = blobstoreService.createUploadUrl("/test/upload");

3.フォームの宛先に(2.)を設定
<form action="${uploadUrl}" method="post" enctype="multipart/form-data">
<input type="file" name="testFile"/>
<input type="submit" value="submit"/>
</form>

4.アップロード先からリダイレクト(Slim3での例)
return redirect("/test/getfile");

(1.)~(3.)はJSP、(4.)はフォームの宛先(/test/upload)のServletで実装します。

(1.)~(2.)で生成されるURLは固定のようですが、
生成されたURLをHTML形式でactionに指定して送信しようとすると、次のエラーが出ます。

No upload session: aglub19…

アップロード時にセッションが何か関係している模様。。。