Weiβlogy

Logo

作ったもの、気づいたこと、試したこと。元エンジニアの視点で技術も日常もつづる雑多ブログ「Weiβlogy」。

View the Project on GitHub weizlogy/blog

2011/04/24

strutsのFormFileからローカルファイルの絶対パスを取得

strutsのFormFileからローカルファイルの絶対パスを取得したいのです。 (取得しても無意味ですが)

eclipseのデバッガで参照すると、確かにprivate変数に絶対パスを持っていますが、アクセスするためのメソッドがありません。

リフレクションでアクセス可能です。

DiskFileItemを使用するために、「commons-fileupload.jar」が必要です。

struts1.3.10

java 1.6.0_18

// formFileの実体は「org.apache.struts.upload.CommonsMultipartRequestHandler.CommonsFormFile」
Field f = formFile.getClass().getDeclaredField("fileItem");
f.setAccessible(true);
// fileItemは「org.apache.commons.fileupload.FileItem」を実装した「org.apache.commons.fileupload.disk.DiskFileItem」
DiskFileItem item = (DiskFileItem) f.get(formFile);
System.out.println(item.getName());