ページの先頭行へ戻る
 Apcoordinatorユーザーズガイド
FUJITSU Software

F.3.1 バイナリファイル送受信機能

ファイルアップロード

ファイルをアップロードする場合は、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>

ファイルをアップロードする場合には、以下の定量制限があります。

注意

ファイルのアップロード機能は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環境でのみ利用できます。