STRUTS 2ファイルアップロード

1863 ワード

手順:
(1)JSPページでのformのenctyeをmultipart/form-dataとする
<body>
<s:form enctype="multipart/form-data" action="fileuploadAction">
<input type="file" name="robinfile"><br>
<s:submit value="   " />
</s:form>  </body>

(2)actionではJSPページ要素をコミットするのと同じfile変数を定義し,対応する2つの変数:名前とファイルタイプ,struts 2ではfile変数名に「ContentType」と「Name」を付けないことを規定する.
	public String execute() throws Exception{
		try {
		String realPath = ServletActionContext.getServletContext().getRealPath("/image");
		System.out.println(realPath);
		File a = new File(realPath);
		if (!a.exists()) {
			a.mkdirs();
		}
		 
			FileUtil.copyFile(robinfile, new File(a,robinfileFileName));
			ActionContext.getContext().put("result", "success");
			System.out.println("success@@");
		} catch (Exception e) {
 			e.printStackTrace();
 			throw e;
		}
		
		return SUCCESS;
	}

(3)注:struts 2のデフォルトのアップロードファイルサイズは(2097152 byteで2 M)で、変更が必要な場合.struts.xmlに定数を追加する必要があります
<constant name="struts.multipart.maxSize" value=" ..... " />


フィルタを使用して、単一actionのアップロードサイズを制御することもできます.
<action name="FileUpload" class="cn.timefly.strutsTest.FileUploadAction">
<result name="success">/FileUploadResult.jsp</result>
<result name="input">/FileUpload.jsp</result>
<interceptor-ref name="fileUpload">
      <param name="maximumSize">500000</param>
      <param name="allowedTypes">application/vnd.ms-powerpoint</param>    
    </interceptor-ref>
<interceptor-ref name="defaultStack" />
    </action>