STRUTS 2ファイルアップロード
1863 ワード
手順:
(1)JSPページでのformのenctyeをmultipart/form-dataとする
(2)actionではJSPページ要素をコミットするのと同じfile変数を定義し,対応する2つの変数:名前とファイルタイプ,struts 2ではfile変数名に「ContentType」と「Name」を付けないことを規定する.
(3)注:struts 2のデフォルトのアップロードファイルサイズは(2097152 byteで2 M)で、変更が必要な場合.struts.xmlに定数を追加する必要があります
フィルタを使用して、単一actionのアップロードサイズを制御することもできます.
(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>