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…
アップロード時にセッションが何か関係している模様。。。