Tomcatは圧縮されたマルチパートHTTPリクエストをパースできない

タイトル通り。今日1日まるごと、この件の調査で潰れた。 ひたすらTomcatのコードをデバッガーで追いかけてました。

まだ部屋の掃除(※週末の固定タスク)もしてないのに…!!(怒)

さて。 例えば、サーブレットフィルタで入力ストリームをデコードするように自作のHttpServletRequestをラップするなどしても、 その後のフィルターチェーンでHttpServletRequest.getPartsを呼んでも、結果は必ず空になります。

この動作がTomcatのバグなのか仕様なのかは知りません。

解決策

commons-fileuploadを使って自前でパースしましょう。

事実上、Tomcat同梱のマルチパートのパース処理と同じものですが、処理のタイミング等が違うのでうまくいきます。