ファイルアップロード
ファイルをアップロードする場合は、managed beanにcom.fujitsu.uji.faces.FacesMimeSource型のプロパティを追加します。
import com.fujitsu.uji.faces.FacesMimeSource; public class MyBean { protected FacesMimeSource file; public FacesMimeSource getFile(){ return file; } public void setFile(FacesMimeSource file){ this.file = file; } }
次にuji:formタグにenctype="multipart/form-data"を追加します。このとき、beanアトリビュートとpropertyアトリビュートで指定された場所にアップロードしたファイルが格納されます。
<f:view>
<uji:form name="myform" method="post" enctype="multipart/form-data" >
<uji:input type="file" bean="myBean" property="file" />
<uji:pushButton label="送信" action="#{mybean.doAction}"/>
</uji:form>
</f:view>アクションメソッドでは、FacesMimeSourceからストリームとファイルを取り出します。 サーバに格納する場合は、サーバ上の絶対パスを指定します。
import java.io.InputStream;
.....
public String doAction() {
String fileName = null;
InputStream is = null;
if (file != null) {
fileName = file.getFileName();
is = file.getInputStream();
}
....
}
.....ファイル転送のパラメタはアプリケーションクラスおよび初期化パラメタで指定します。
アプリケーションクラスの以下のメソッドをオーバライドすることで、転送サイズの上限、転送時に使用するメモリサイズ(超えると作業ファイルを使用)を指定できます。デフォルトは、転送サイズの上限が16Mバイト、メモリサイズが1Mバイトです。
// ファイル転送の最大サイズです。単位はバイトです。0は無制限を表します。
public long getMimeTransferSizeLimit() {
// 転送サイズの上限を32Mバイトにします。
return 32*1024*1024;
}
// ファイル転送時に準備するメモリサイズです。単位はバイトです。
public int getMimeTransferMemorySize() {
// 転送時に準備するメモリサイズを1Mバイトにします。
return 1024*1024;
}初期化パラメタ(uji.mimeParseSizeLimit)を指定すると、リクエストパラメタの解析サイズの上限を指定できます。デフォルトは、ファイル転送サイズの上限の5倍です。ファイル転送の最大サイズを超えたファイルをアップロードした場合、ファイルデータは破棄されますが、リクエストパラメタの解析サイズの上限に達するまで、リクエストパラメタの解析は継続されます。
<!--
ファイルをアップロードをする場合のパラメタ解析サイズの上限です。単位はバイトです。
パラメタ解析サイズの上限を40Mバイトにします。
-->
<context-param>
<param-name>uji.mimeParseSizeLimit</param-name>
<param-value>41943040</param-value>
</context-param>
ファイルをアップロードする場合には、以下の定量制限があります。
アップロードヘッダ長は1024バイト以内です。
アップロードヘッダには、項目名とファイル名の情報が含まれます。利用するブラウザによって多少異なりますが、項目名長とファイル名長を合わせて、970バイト程度を指定可能です。
アップロードヘッダ長が1024バイトを超えた場合は、IOExceptionをラップしたUUIRuntimeException例外が発生します。
アップロードファイルサイズの上限はデフォルトで16MB(16*1024*1024バイト)です。
このサイズは、アプリケーションクラスでgetMimeTransferSizeLimitメソッドをオーバライドすることで変更できます。
アップロードファイルサイズの上限を超えた場合は、FacesMimeSourceから取得したストリームは、nullとなります。
リクエストパラメタの解析サイズの上限はデフォルトで80MB(16*1024*1024*5バイト)です。
このサイズは、初期化パラメタ(uji.mimeParseSizeLimit)を指定することで変更できます。
リクエストパラメタのサイズが上限を超えた場合は、IOExceptionをラップしたUUIRuntimeException例外が発生します。
注意
ファイルのアップロード機能はJ2EE環境でのみ利用できます。
ファイルダウンロード
ファイルをダウンロードする場合は、managed beanにダウンロードを実行するアクションメソッド追加し、com.fujitsu.uji.faces.FacesMimeSupportクラスのfillResponseメソッドを実行します。
import java.io.File;
import com.fujitsu.uji.faces.FacesMimeSupport;
public class MyBean {
.....
public String download() {
// ダウンロードするファイルを取得します
File file = getDownloadFile();
try {
// ダウンロードを実行します
FacesMimeSupport.fillResponse(file);
} catch(Exception e) {
e.printStackTrace();
}
return "ok";
}
.....
}<f:view>
<uji:form name="myform" >
<uji:pushButton bean="myBean" property="button"
label="ダウンロード" action="#{mybean.download}"/>
</uji:form>
</f:view>注意
ファイルのダウンロード機能はJ2EE環境でのみ利用できます。