Struts2使用Form表单实现文件上传

Struts2使用Form表单实现文件上传

前端页面代码

这里注意将from表单的enctype属性设置为 “multipart/form-data”

属性值描述
application/x-www-form-urlencoded在发送前编码所有字符(默认)
multipart/form-data不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。
text/plain空格转换为 “+” 加号,但不对特殊字符编码。
 <form action="../test/add.go" method="post" enctype="multipart/form-data">
    图片:<input type="file" name="imgFile"><br>
    <button type="submit">添加</button>
    </form>

建立失血模型

public class UpLoadBean {
   /*file类型的变量名必须与form表单中name值一致,struts2才能自动封装
    * 
    */
   private File imgFile;//文件
   private String imgFileFileName;//文件名imgFile+FileName自动获取文件名
   private String imgFileContentType;//文件类型imgFile+ContentType自动获取文件类型

   public File getImgFile() {
   	return imgFile;
   }

   public void setImgFile(File imgFile) {
   	this.imgFile = imgFile;
   }

   public String getImgFileFileName() {
   	return imgFileFileName;
   }

   public void setImgFileFileName(String imgFileFileName) {
   	this.imgFileFileName = imgFileFileName;
   }

   public String getImgFileContentType() {
   	return imgFileContentType;
   }

   public void setImgFileContentType(String imgFileContentType) {
   	this.imgFileContentType = imgFileContentType;
   }
}

封装上传工具包

public class UpLoadUtils {
	public static void upload(File ImgFile,String ImgFileFileName) {
	    //获取ServletContext
		ServletContext context = ServletActionContext.getServletContext();
		//获取项目运行目录的路径
		String path=context.getRealPath("/upload");
		File file = new File(path);
		//判断当前目录是否存在,如果不存在则创建目录
		if (!file.exists()) {
			System.out.println("进入");
			file.mkdir();
		}		
		try {
		
		/*复制上传的文件到指定目录
         * copyFile中第一个参数为文件,第二个文件路径
         * newFile第一个参数为路径 第二个文件名
         */
			FileUtils.copyFile(ImgFile, new File(path,ChangeFileName(ImgFileFileName)));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	//产生新的文件名为UUID+旧的文件名
	public static String ChangeFileName(String name) {
		String num = UUID.randomUUID().toString();
		String newName = num+name;
		return newName;
	}
}

action:

/*此处为基于模型驱动 
 *实现ModelDriven接口
 *重写getModel()方法,返回值为需要自动写入的变量
 */
 public class UpLoadAction implements ModelDriven<UpLoadBean>{
	private UpLoadBean bean = new UpLoadBean();
	public String execute() {
		UpLoadUtils.upload(bean.getImgFile(), bean.getImgFileFileName());
		return "success";		
	}
	@Override
	public UpLoadBean getModel() {
		return bean;
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值