Strutsリファレンス(逆引き)

Strutsリファレンス
 
Web struts.wasureppoi.com
ファイルアップロード
スポンサード リンク

Strutsを使用したファイルアップロードのサンプル

画面イメージ
入力画面

アップロード結果画面


入力画面JSP

<%@ page pageEncoding = "Shift_JIS" %>
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>

<html><body>

<html:form action="/upload_view" enctype="multipart/form-data" >

<html:file property="fileData" size="50" /><BR>

<html:submit property="submit" value="送信" />
</html:form>

</body></html>

ファイルアップロードでは、<html:form>タグのenctype属性に、「multipart/form-data」を指定します。
<html:file>タグの詳細は、<html:file>タグの説明を参照して下さい。


ダウンロード結果画面JSP

<%@ page pageEncoding = "Shift_JIS" %>
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>

<html><body>

ファイル名   : <bean:write name="UploadForm" property="fileData.fileName" /> <br>
ファイルサイズ : <bean:write name="UploadForm" property="fileData.fileSize" />バイト <br>
コンテントタイプ : <bean:write name="UploadForm" property="fileData.contentType" /> <br>

</body></html>

FormFile#getFilenameメソッド:ファイル名取得
FormFile#getFileSizeメソッド:ファイル名取得
FormFile#getContentTypeメソッド:ファイル名取得


スポンサード リンク


アクションフォーム定義

<form-beans>
  <form-bean name="UploadForm" type="org.apache.struts.validator.DynaValidatorForm" >
      <form-property name="fileData" type="org.apache.struts.upload.FormFile" />
   </form-bean>
<form-beans>

フォームのプロパティのデータ型は、インターフェース「org.apache.struts.upload.FormFile」を指定します。

アクションクラスの実装

package sample.pg;

import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import java.io.*;

public class UploadAction extends Action {

   public ActionForward execute(ActionMapping mapping,
                      ActionForm form,
                      HttpServletRequest request,
                      HttpServletResponse response) throws Exception {

    // 配列、コレクションデータをアクションフォームに設定
    DynaActionForm inform = (DynaActionForm)form;
    FormFile filedata = (FormFile)inform.get("fileData");

    // 受信ファイルを取得
     String fileName = filedata.getFileName();

    // 入力ストリームのバッファリング
    InputStream in = filedata.getInputStream();
    BufferedInputStream inBuf = new BufferedInputStream(in);

    // 出力ストリームをバッファリング
    OutputStream out = new FileOutputStream("c:\\temp\\" + fileName);
    BufferedOutputStream outBuf = new BufferedOutputStream(out);

    // 受信ファイルを「c:\temp\受信ファイル名」で出力
    int data = 0;
    while( (data = inBuf.read()) !=-1) {
      outBuf.write( data);
    }

    outBuffer.flush();
    outBuf.close();
    inBuf.close();

    // 一時領域の受信ファイル情報を削除
    filedata.destroy();

    return mapping.findForward("success");
  }
}



スポンサード リンク


ファイルアップロード
FormFileインターフェースのメソッド
ファイルアップロードの設定<controllerタグ>

Commonsへ
忘れっぽいエンジニアのJakarta Strutsリファレンス TOPへ