1.导入jar包
<!--文件上传-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
2.设置表单提交属性
<s:form action="upload.action" enctype="multipart/form-data" method="post">
<s:file name="upload" label="选择文件"/>
<s:submit name="submit" value="上传"/>
</s:form>
注意点:
表单的提交方式必须为post
表单设置enctype="multipart/form-data"
3.编写上传的Action
public class UploadAction {
private File upload;//变量名要与jsp中的s:file标签的name一致
private String uploadContentType;//上传文件的mimeType类型
private String uploadFileName;//上传文件的名称
private String savePath;//获取文件上传路径
//省略get,set方法
@Override
public String execute() throws Exception {
byte[] buffer = new byte[1024];
FileInputStream fis=new FileInputStream(this.getUpload()); //创建输入流
FileOutputStream ois=new FileOutputStream(getSavePath()+"\\"+this.getUploadFileName()); //创建输出流
int length=fis.read(buffer); //从输入流中读取数据
while((length>0){
fos.write(buffer,0,length); //写入数据
length=fis.read(buffer);
}
fis.close();
fos.flush();
fos.close();
return SUCCESS;
}
4.配置struts.xml的Action
<!-- 编码格式统一 -->
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<!-- 文件大小设置20M,默认为2M -->
<constant name="struts.multipart.maxSize" value="20971520"/>
<package name="default" extends="struts-default">
<action name="upload" class="con.wg.action.UploadAction ">
<!-- 配置上传文件类型 -->
<param name="allowedTypes">
image/bmp,image/jpeg,image/png
</param>
<!-- 配置上传文件最大不能超过多少(单位Byte,这里是50M) -->
<param name="maximumSize">5288608</param>
<!-- 传递到action中的savePath参数,用作存储文件的相对路径 -->
<param name="savePath">/upload</param>
<result name="success">/upload_success.jsp</result>
</action>
</package>