Apcoordinator ユーザーズガイド |
目次 |
第3部 Webアプリケーションの開発 | > 第16章 APIを使ったプログラミング | > 16.2 バイナリファイルの送受信 |
com.fujitsu.uji.util.MimeSource
型に定義します。
入出力ページは以下のように作成します。
import com.fujitsu.uji.util.MimeSource; public class UpBean extends com.fujitsu.uji.DataBean { protected MimeSource file; public MimeSource getFile() { return file; } public void setFile(MimeSource file) { this.file = file; } }
enctype="multipart/form-data"
を追加します。
type="file"
とします。また初期値を削除します。
ビジネスクラスでは、Beanからストリームとファイルを取り出すことができます。 サーバに格納する場合は、サーバ上の絶対パスを指定します。
<%@ taglib uri="uji-taglib" prefix="uji" %> <uji:useBean id="body" cls="updown.UpBean" request="true" /> <FORM method="post" enctype="multipart/form-data"> <INPUT name="uji.verbs" type="hidden" value="upload"> <INPUT name="uji.id" type="hidden" value="head">ファイル名: <INPUT type="file" name="file" > <BR> <INPUT name="upload" type="submit" value="送信"> </FORM>
ファイルの取り出しが終了したら、MimeSource型のプロパティにnullを設定します。このようにしてMimeSourceへの参照を削除することにより、ガーベジコレクタがMimeSourceを破棄できるようになります。MimeSourceが破棄された時点でリソースが解放されます。
import java.io.InputStream; import com.fujitsu.uji.util.MimeSource; ..... public void upload(DispatchContext context, UpBean dataBean) { MimeSource source = dataBean.getFile(); InputStream is = source.getInputStream(); String fname = source.getFileName(); .... } .....
ファイル転送のパラメタはアプリケーションクラスで指定します。アプリケーションクラスの以下のメソッドをオーバライドすることで、転送サイズの上限、転送時に使用するメモリサイズ(超えると作業ファイルを使用)を指定することができます。デフォルトは、転送サイズの上限が16Mバイト、メモリサイズが1Mバイトです。
dataBean.setFile(null);
ファイルをアップロードする場合には、以下の定量制限があります。
// ファイル転送の最大サイズです。単位はバイトです。0は無制限を表します。 public long getMimeTransferSizeLimit() { // 転送サイズの上限を32Mバイトにします。 return 32*1024*1024; } // ファイル転送時に準備するメモリサイズです。単位はバイトです。 public int getMimeTransferMemorySize() { // 転送時に準備するメモリサイズを1Mバイトにします。 return 1024*1024; }
目次 |