zoukankan      html  css  js  c++  java
  • struts2文件上传

    文件上传说白了就是利用form表单request域中上传数据,后台到Action中解析request域进行文件获取和文件类型以及后缀解析,过程比较繁琐,不过这些公共的繁琐步骤是struts框架已经为我们做好了,只需要按照其规则进行页面绘制和后台属性注入即可

    1、form表单必须为method="post" enctype="multipart/form-data",得有file标签

    <input type="file" name="upload" />
    

    2、action中定义拦截器规定名字的属性,File类型的属性用于接收上传的文件内容,文件名得和form表单中的file类型标签的name一致,后面两个属性是struts拦截器用的用于存放文件名和文件类型的,省得自己再去解析了,要求就是前部分和form表单的name一致,后半部分以FileName结尾或以ContentType结尾

    3、在相应Action的方法中就可以直接获取文件内容和后缀以及文件名进行保存使用,如

      

    		if(uploadFileName != null){
    			// 打印
    			System.out.println("文件类型:"+uploadContentType);
    			// 把文件的名称处理一下
    			String uuidname = UploadUtils.getUUIDName(uploadFileName);
    			// 把文件上传到D:\apache-tomcat-7.0.52\webapps\upload
    			String path = "D:\apache-tomcat-7.0.52\webapps\upload\";
    			// 创建file对象
    			File file = new File(path+uuidname);
    			// 简单方式
    			FileUtils.copyFile(upload, file);	
    			//import org.apache.commons.io.FileUtils;工具类 		
    			xxxService.save(pojo);   //同时记得把文件保存到图床的位置还得保存到对应实体的img字段中,不然回显不了图片
    		}
    

    4、默认struts图片上传会有大小限制,默认为2M,如果想上传更大点,可以自己配置常量

    5、上传类型限制,需要自己在fileupload拦截器中注入属性值,如果使用的是默认拦截器栈struts-default,那么在Action的配置文件中,把默认拦截器栈引入过来,指定要修改默认拦截器栈中哪一个拦截器,具体如下,此例为简单配置,如果很多action使用了图片上传,那么最好配置成功通用的拦截器栈来继承:

  • 相关阅读:
    Visual Studio Code 配置C/C++环境
    二叉链的基本操作
    回文自动机
    吊打线段树的超级树状数组
    Treap平衡树
    uni-app nvue页面动态修改导航栏按钮
    uni-app map组件关于marker标记点动态设置的问题
    uni-app 提示 v-for 暂不支持循环数据
    uni-app APP端隐藏导航栏自定义按钮
    uni-app路径规划(打开第三方地图实现)
  • 原文地址:https://www.cnblogs.com/javabg/p/7352847.html
Copyright © 2011-2022 走看看