26. ファイルアップロード(WebWork2.2)

基本的にはid:matobat:20050211:p5とあまり変わっていませんがいくつか変更があるようです。
なおファイルアップロード実装はJakartaしか試していないのでご注意ください。

ContentTypeとファイル名の取得

MultiPartRequestWrapperを使わなくてもファイルのContentTypeやファイル名が取得できるようになっていました。
それぞれファイルのプロパティ名の後ろにContentType,FileNameを付けます

サンプル(getter,setter省略):
public class FileUploadAction extends ActionSupport {
    private File file;
    private String fileFileName;
    private String fileContentType;
}

日本語パラメータの問題

なぜかmultipart/form-dataなリクエストだと、FilterDispatcherでServletRequest#setCharactorEncoding()が呼ばれないように変更されています。
そのためマルチバイトのパラメータが全部化けます。(ファイル以外の部分も)
なのでFilterDispatcherの前でServletRequest#setCharactorEncoding()を実行するFilterを呼ぶか、
JakartaMultipartRequestを拡張してServletRequest#setCharactorEncoding()を呼ぶ必要があります。
なおパラメータの解析はInterceptorよりも前の処理なのでInterceptorでは実装できません。