JSP页面设置:
<body>
<form action="upload.action" method="post"
enctype="multipart/form-data">
<input type="file" name="filename">
<br />
<input type="submit" value="上传">
</form>
</body>
Action的编写方式,默认情况下上传大小为2M可以通过配置文件进行调整
public class Upload extends ActionSupport {
// Struts会自动清空临时空间当中的文件,如果不自动清空的话可以调用方法手动清理掉myFile.delete()
private File filename; // 上传的临时文件
private String filenameFileName;// 文件名
private String filenameContentType;// 文件类型
public File getFilename() {
return filename;
}
public void setFilename(File filename) {
this.filename = filename;
}
public String getFilenameFileName() {
return filenameFileName;
}
public void setFilenameFileName(String filenameFileName) {
this.filenameFileName = filenameFileName;
}
public String getFilenameContentType() {
return filenameContentType;
}
public void setFilenameContentType(String filenameContentType) {
this.filenameContentType = filenameContentType;
}
@Override
public String execute() throws Exception {
String parent = ServletActionContext.getServletContext().getRealPath(
"/upload");
String path = filenameFileName;// 目标
File file = new File(parent, path);
FileUtils.copyFile(filename, file);
// TODO Auto-generated method stub
return SUCCESS;
}
}
struts.xml配置:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 该属性指定需要Struts2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。 如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。 --> <constant name="struts.action.extension" value="do" /> <!-- 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 --> <constant name="struts.serve.static.browserCache" value="false" /> <!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 --> <constant name="struts.configuration.xml.reload" value="true" /> <!-- 开发模式下使用,这样可以打印出更详细的错误信息 --> <constant name="struts.devMode" value="true" /> <!-- 默认的视图主题 --> <constant name="struts.ui.theme" value="simple" /> <!--<constant name="struts.objectFactory" value="spring" />--> <!--解决乱码 --> <constant name="struts.i18n.encoding" value="UTF-8" /> <!-- 指定允许上传的文件最大字节数。默认值是2097152(2M) --> <constant name="struts.multipart.maxSize" value="10701096"/> <!-- 设置上传文件的临时文件夹,默认使用javax.servlet.context.tempdir --> <constant name="struts.multipart.saveDir " value="d:/tmp" /> <package name="upload" namespace="/" extends="struts-default"> <action name="*_upload" class="com.ljq.action.UploadAction" method="{1}"> <result name="success">/WEB-INF/page/message.jsp</result> </action> </package> <package name="upload2" extends="struts-default"> <action name="upload2" class="com.ljq.action.UploadAction2" method="execute"> <!-- 动态设置savePath的属性值 --> <param name="savePath">/images</param> <result name="success">/WEB-INF/page/message.jsp</result> <result name="input">/upload/upload.jsp</result> <interceptor-ref name="fileUpload"> <!-- 配置上传文件的允许的文件类型 --> <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg</param>
<!-- 允许上传的文件扩展名 -->
<param name="allowedExtensions"></param>
<!-- 文件大小, 以字节为单位 --> <param name="maximumSize">1025956</param> </interceptor-ref> <!-- 默认拦截器必须放在fileUpload之后,否则无效 --> <interceptor-ref name="defaultStack" /> </action> </package> </struts>