1. 客户端注意事项

  • method="post"
  • enctype="multipart/form-data"
  • <input type="file" name="upload"/>

2. 文件上传

  1. Struts2 框架使用拦截器来完成文件上传,并且底层使用的也是 FileUpload 组件;
  2. FileUpload 拦截器默认在 dafaultStack 栈中,默认会执行的;
  3. 文件上传时,需要在 Action 类中定义三个属性:
    • private File upload, 该属性名与表单中file 的 name 属性名一致; 表示要上传的文件;
    • private String uploadFileName, 前段是 name 属性名 + FileName,表示上传文件的名称;
    • private String uploadContentType,前段是name属性名+ContentType,表示上传文件的 MIME 类型;
  4. 需要为上述的三个属性提供 set 方法,拦截器就可以注入值了;
// 上传代码
// 首先,判断上传的文件存在
if(uploadFileName != null){
// 处理文件名称
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); // 将上传的文件路径,保存到数据库表中
customer.setFilepat(path+uuidname);
} public class UploadUtils {
public static String getUUIDName(String filename){ int index = filename.lastIndexOf(".");
// 获取文件后缀名
String lastname = filename.substring(index,filename.length()); // 生成的uuid, 带有"-",需要替换 xxxx-xxxx-xxxx
String uuid = UUID.randomUUID().toString().replace("-","");
return uuid + lastname;
}
}

3. 文件上传常见问题

3.1 解决方案

  • 在 struts.xml 中对应的<action>标签下配置

    <result name="input">/jsp/error.jsp</result>

3.2 配置上传文件大小

  • 文件上传的总大小默认值是 2M, 如果超出了 2M,程序会报出异常;该常量可以在default.properties中查看
  • 可以在 struts.xml 中设置常量,修改文件上传的默认在大小:

    <constant name="struts.multipart.maxSize" value="5000000"/>

3.3 通过配置拦截器来设置上传文件的一些属性

// struts.xml
<action name="xxxx" class="xxxxx">
// 引入默认的拦截器
<interceptor-ref name="defaultStack">
// 设置 fileUpload 拦截器的"单个上传文件的大小"属性
<param name="fileUpload.maximumSize">2097152</param> // 设置fileUpload 拦截器的"扩展名"属性
<param name="fileUpload.allowedExtensions">.txt</param> </interceptor-ref>
</action>

Struts 上传文件的更多相关文章

  1. Struts上传文件

    Struts上传文件分为两个步骤: 1). 首先将客户端上传的文件保存到Struts.multipart.saveDir键所指定的目录中,如果该键所对应的目录不存在,那么就保存到javax.servl ...

  2. struts 上传文件 Dynavalidatorform 实例

    一.相关jar包     一个空struts工程的jar包:    另上传文件的两个jar包: 二.页面 1.上传页面upload.jsp <%@ page language="jav ...

  3. struts上传文件 血案

    记录一个图片上传之后没有后缀 拓展名问题 平常我们查询数据都是  fileImage=fileImageService.getQuery();  让entity等于它 那么fileImage.getF ...

  4. 利用Struts上传文件

    在利用struts2完成上传文件到服务器时,遇到获取不到文件名 原因是在Action中的属性名没有和jsp中的属性名匹配 <%@ page language="java" i ...

  5. java+struts上传文件夹文件

    这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...

  6. struts上传文件报argument type mismatch错误

    报错如下图所示: 报错原因:把String 强行转换成FormFile,所以才会抛出argument type mismatch.经查询:表单(html:form)中enctype="mul ...

  7. Struts Upload上传文件

    1.Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.te ...

  8. 上传文件报错--Unable to find 'struts.multipart.saveDir' property setting.

    struts2 上传文件时,有时候会报这个错误. Unable to find 'struts.multipart.saveDir' property setting. Defaulting to j ...

  9. Unable to find ‘struts.multipart.saveDir’ Struts2上传文件错误的解决方法

    Unable to find ‘struts.multipart.saveDir’ Struts2上传文件错误的解决方法 在使用struts2的项目中上传文件的时候出现了一个这样的错误: 2011-7 ...

随机推荐

  1. 从零開始学android&lt;ScrollView滚动视图.十八.&gt;

    因为手机屏幕的高度有限.所以假设面对组件要显示多组信息的时候,ScrollView视图(滚动视图)能够有效的安排这些组件,浏览时能够自己主动的进行滚屏的操作. android.widget.Scrol ...

  2. Atitit.故障排除系列---NoClassDefFoundError  NoClassDefFoundError ClassNotFoundException

    Atitit.故障排除系列---NoClassDefFoundError  NoClassDefFoundError ClassNotFoundException 1. java.lang.Class ...

  3. Vivado Logic Analyzer的使用

    chipscope中,通常有两种方法设置需要捕获的信号.1.添加cdc文件,然后在网表中寻找并添加信号2.添加ICON.ILA和VIO的IP Core 第一种方法,代码的修改量小,适当的保留设计的层级 ...

  4. Sublime Text 编辑器 插件 之 "Sublime Alignment" 详解

    作者:shede333主页:http://my.oschina.net/shede333版权声明:原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | [Creative Commons BY- ...

  5. [css]margin-top重叠

  6. RIP协议两个版本对不连续子网的支持情况实验

    一.连续子网与不连续子网 我们经常见到说RIPv1不支持不连续子网,仅支持连续子网,那么什么是连续子网,什么是不连续子网呢? l  不连续子网:指在一个网络中,某几个连续由同一主网划分的子网在中间被多 ...

  7. 跟着百度学PHP[15]-会话控制session的工作机制

    COOKIE和SESSION的两大区别: cookie是存储与客户端 session是存储与服务端 需要开启session的时候需要使用session_start开启,且session的开头不能拥有任 ...

  8. Java泛型小结

    本来想着写一篇总结Java泛型的文章,但是却发现了一篇不错的博文,引用自: http://www.cnblogs.com/lwbqqyumidi/p/3837629.html#undefined 现摘 ...

  9. golang mongodb查找find demo

    使用gopkg.in/mgo.v2库操作,插入操作主要使用mongodb中Collection对象的Find方法,函数原型: func (c *Collection) Find(query inter ...

  10. Node.js模块 require和 exports

    https://liuzhichao.com/p/1669.html http://www.cnblogs.com/pigtail/archive/2013/01/14/2859555.html