日本語ファイル名のアップロード

WebWork2で日本語ファイル名のアップロードを処理しようとして、かなりはまりました。
何かの役に立つかもしれないので、解決法をここにメモっておきます。

まず、MultipartなRequestのパーサーはデフォルトでPellMultiPartRequestです。PellMultiPartRequestクラスはhttp.utils.multipartrequest.ServletMultipartRequestのアダプターという位置づけになります。

で、そのServletMultipartRequest自体はエンコーディングを指定することで、マルチバイトなファイル名に対応しています。
問題はPellMultiPartRequestなんです。ServletMultipartRequestに対してエンコーディングの指定を行う部分が、なぜかコメントアウトされていました。

//encoding = Configuration.getString("webwork.i18n.encoding");

PellMultiPartRequestをコピーして、コメントアウトを解除して、webwork.propertiesに以下の記述を追加しパーサーを切り替えることで、日本語ファイル名のアップロードを処理できるようになりました。

webwork.multipart.parser=jp.mobster.wiki.multipart.PellMultiPartRequest
webwork.i18n.encoding=Windows-31J

PellMultiPartRequestのコメントには「問題を引き起こす場合がある・・・」といった感じのことが書いてあってちょっと怖いんですけど、まぁ動いているのでよしとします。

やっとMobWiki1.2がリリースできそうです。