JSF(MyFaces)でのファイルアップロードしてサーバ上のどっかに保存

マネージドビーンのフィールドにUploadedFile(org.apache.myfaces.custom.fileupload.UploadedFile)を定義。複数のファイルの場合は、その数だけいる。何回もアップロードして複数のファイルをアップロードする場合は、Listにするとよし。

保存するメソッドをつくる。

UploadFile upFile とするならば
ファイル名がとれるが、サーバ上に保存するときもとのファイル名はいろいろ使いたくない。が、拡張子は欲しい

String upfileName = upFile.getName();
int num = upfileName.lastIndexOf(".");
// 拡張子
String ext = upfileName.substring(num, upfileName.length());

// サーバ上のどっか
String fpath = "/hoge/fuga";
File file = new File(fpath + File.separator
     + "somethingFileName"+ ext);
OutputStream out = new FileOutputStream(file);
out.write(upFile.getBytes());
out.close();

JSPのほうは、フォームをマルチパートにするのを忘れているとはまるやも。

<h:form enctype="multipart/form-data">
:::
<t:inputFileUpload value="#{myBean.upFile}" />