Slim3でブロブストア | sola's note

sola's note

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

Slim3でブロブストアを使おうとすると、想定外の挙動になることがある

Slim3でブロブストアを使おうとした時のこと。

Slim3がブロブストアをカバーしていないような気もするけれど、
ブロブストアも使いたいんだよという時に、無理やり使う場合は注意。
(もしかしたら使い方がイレギュラーだったのかもしれないけど…。)

ブロブストアは、アップロードで指定したサーブレットを通さずに直接ブロブストアにファイルを送ります。
ファイルをアップロードする際に指定したformのaction先には、
ブロブストアにアップロードした後、アップロード情報を返します。

×JSP→Servlet→ブロブストア
○JSP→ブロブストア→Servlet

という流れ。

で、Slim3だと何がまずいかというと、

ブロブストア→Servlet

でServletの処理に移った時に、リクエストパラメータを使う場合。
通常リクエストパラメータを取得する場合は、

String hogehoge = request.getParameter("hogehoge");

としますが、
Slim3では

String hogehoge = asString("hogehoge");

とします。
しかし、ブロブストアアップロード後の場合、
Slim3の

String hogehoge = asString("hogehoge");

という方法でパラメータを取得しようとすると、
どうやら取得内容がnullになる模様です。

同時に、Validatorも使えません。
(requiredを設定していると、必須エラーになります。)

細かい解析はしていないので、
原因はわかりませんが、気を付けて下さい。

ちなみに、

String hogehoge = request.getParameter("hogehoge");

では取得可能でした。

ローカルテスト環境では再現しないので、
確認する場合はデプロイした後が良いです。