web.xml 註冊 Struts2 Filter關鍵常數設定:
struts.action.extension 設為 dostruts.multipart.maxSize 上傳檔案大小限制 (10MB)struts.multipart.saveDir 暫存目錄Action 映射範例:
<action name="fileUpload" class="com.ifan.action.FileUpload">
<param name="savePath">WEB-INF/images</param>
<result name="success">/success.jsp</result>
<result name="input">/error.jsp</result>
<interceptor-ref name="fileUpload">
<param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg</param>
<param name="maximumSize">1025956</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
</action>
public class FileUpload extends ActionSupport {
private File[] image;
private String[] imageFileName;
private String[] imageContentType;
public String execute() throws Exception {
ServletActionContext.getRequest().setCharacterEncoding("UTF-8");
String realpath = ServletActionContext.getServletContext().getRealPath("/images");
File savedir = new File(realpath);
if (!savedir.getParentFile().exists()) savedir.getParentFile().mkdirs();
if (image != null) {
for (int i = 0; i < image.length; i++) {
File savefile = new File(savedir, imageFileName[i]);
FileUtils.copyFile(image[i], savefile);
}
ActionContext.getContext().put("message", "文件上傳成功");
}
return "success";
}
// getter/setter 略
}
<s:form action="fileUpload" namespace="/" method="POST" enctype="multipart/form-data">
<s:file name="image" label="Select a File to upload" size="40" />
<s:file name="image" label="Select a File to upload" size="40" />
<s:submit value="submit" name="submit" />
</s:form>
建立 success.jsp、error.jsp 以及 WebContent/images 資料夾作為上傳檔案儲存位置。