2014年11月20日木曜日

Tomcat7 Servlet3.0のPart#getPartがフィルターと一緒だとnullを返しやがる件

MultipartConfigアノテーションにより簡単にファイルアップロードが出来るようになりました!

とか言って騙されたよ!2時間はハマったわ!


サーブレットクラスに@MultipartConfigをつけなければ、Part#getPart(...)はnullを返す、そこまでは最初に把握したのだが、それをしっかりつけてんのにやはりnull。

なんじゃそりゃあ、と思ったら、フィルターを併用している場合はこれじゃ動かないとか。仕様なのかバグなのかよくわからないけど。


で、解決のためのおまじないが、server.xmlのContext要素(Webアプリの名前とか書いてあるやつ)に、


<Context allowCasualMultipartParsing="true" docBase="...

と、 allowCasualMultipartParsing="true" を追加する。

これをやるとMultipartConfigがそもそもなしでもよくなるらしいが、それはともかくフィルターがあってもgetPartはちゃんと値を返すようになりました!


・・・まだその後に普通のバグがあって動いてないけど!

0 件のコメント:

コメントを投稿