Struts2 文件上传
1.用的是这个拦截器
2.需要引入两个jar包
3.写个页面
4.最后效果,
5.这里需要写一个action 注意:这里的file和上边jsp中的name值是一致的
6.都提供get set方法
实例:
package com.hrxb.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.io.IOUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUpAction extends ActionSupport {
private File file;// 上传文件本身
private String fileFileName;// 上传文件名字
private String savePath;// 上传文件保存的路径
// 执行上传文件的方法
public String fileUpload() throws IOException {
// 文件路径
File f = new File(ServletActionContext.getServletContext().getRealPath(savePath));
if (!f.exists()) {// 如果路径不存在就创建
f.mkdirs();
}
// 创建输入流
FileInputStream is = new FileInputStream(file);
// 创建输出流
FileOutputStream os = new FileOutputStream(f + "//" + fileFileName);
// 写入磁盘
IOUtils.copy(is, os);
//
os.flush();
// 关闭流
os.close();
is.close();
return SUCCESS;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
public String getSavePath() {
return savePath;
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
}
7.
8.
9.注意 上边的一定要和这里的name的值是相对应的
10.通过拦截器控制上传文件的类型。。。
这个拦截器的属性需要自己定义,不然它就默认定义
例子:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 模块 -->
<package name="user" extends="struts-default">
<!-- name:映射URL -->
<action name="user_*" class="com.hrxb.action.UserAction"
method="{1}">
<!-- 返回结果 跳转页面 -->
<result name="list">/WEB-INF/jsp/userList.jsp</result>
<!-- 跳转到增加页面 -->
<result name="toAdd">/WEB-INF/jsp/userAdd.jsp</result>
<!--增加完成后跳转到查询Action -->
<result name="addOK" type="redirectAction">user_findAll</result>
<result name="toUpdate">/WEB-INF/jsp/userUpdate.jsp</result>
<!-- 修改成功 -->
<result name="updateOK" type="redirectAction">user_findAll</result>
<!-- 删除 -->
<result name="deleteOK" type="redirectAction">user_findAll</result>
</action>
</package>
<!--文件上传模块 -->
<constant name="struts.custom.i18n.resources" value="fileupMessage"></constant>
<package name="fileUp" extends="struts-default">
<action name="fileUpload" class="fileUpAction" method="fileUpload">
<!--保存路径 -->
<param name="savePath">/upload/</param>
<!-- 使用文件上传拦截器 -->
<interceptor-ref name="fileUpload">
<!-- 允许上传文件的扩展名 -->
<param name="allowedExtensions">jpg,jpeg,gif</param>
<!-- 允许文件上传的大小 -->
<param name="maximumSize">1024*1024*10</param>
</interceptor-ref>
<!-- 继续执行后续拦截器 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
<!-- 文件上传成功 -->
<result name="success">/WEB-INF/jsp/success.jsp</result>
<!-- 文件上传失败 -->
<result name="input">fileup.jsp</result>
</action>
</package>
</struts>
11.一发布就到这个路径下
12
错误是个数组
自定义上传失败的信息
从这里复制