日本語ファイル名のアップロード
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がリリースできそうです。