FileUploadの為のAction
Uploadされると、FileUploadInterceptorによって
- ファイルは一時ファイルとして保存される
- MIME型、サイズがチェックされパスした要素についてパラメータ設定
- 各file型のフィールドについて次のパラメータを追加
パラメータ名 データ型 備考
フィールド名 java.io.File型 一時ファイル
フィールド名FileName String型 クライアント側のファイルリーフ名
フィールド名ContentType String型 MIME形式
- 次のInterceptor呼び出しをし
- 一時ファイルを削除する
という処理がなされる。
またparametersInterceptorが後にあれば、各パラメータについて setXXX が呼ばれる。
予めUpload数が既知であれば、それぞれsetXXXを用意すればいいし、わからなければparameterをループで処理すればいい。
今回フィールドは2つと予め判っているので、受け取りのアクションは次のようになる。
tutorial.UploadAction.java
package tutorial; import java.io.File; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.interceptor.validation.SkipValidation; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; /** * Struts2 アクションクラス * * @author mikuni * */ public class UploadAction extends ActionSupport implements ModelDriven { private static final long serialVersionUID = 1870444428158165140L; static Log log = LogFactory.getLog(UploadAction.class); File file1; String file1type; String file1name; File file2; String file2type; String file2name; public UploadAction() { } public UploadAction getModel() { return this; } @SkipValidation public String doNothing() { return SUCCESS; } public String doUpload() { return SUCCESS; } public void setFile1( File file ) { this.file1 = file; } public void setFile1ContentType( String type ) { this.file1type = type; } public void setFile1FileName( String name ) { this.file1name = name; } public File getFile1( ) { return this.file1; } public String getFile1ContentType( ) { return this.file1type; } public String getFile1FileName( ) { return this.file1name; } public void setFile2( File file ) { this.file2 = file; } public void setFile2ContentType( String type ) { this.file2type = type; } public void setFile2FileName( String name ) { this.file2name = name; } public File getFile2( ) { return this.file2; } public String getFile2ContentType( ) { return this.file2type; } public String getFile2FileName( ) { return this.file2name; } }
Springの設定は単純なBean生成だけ
<bean id="UploadAction" class="tutorial.UploadAction" scope="request"> </bean>