Struts 上传文件
1. 客户端注意事项
method="post"enctype="multipart/form-data"<input type="file" name="upload"/>
2. 文件上传
- Struts2 框架使用拦截器来完成文件上传,并且底层使用的也是 FileUpload 组件;
- FileUpload 拦截器默认在 dafaultStack 栈中,默认会执行的;
- 文件上传时,需要在 Action 类中定义三个属性:
private File upload, 该属性名与表单中file 的 name 属性名一致; 表示要上传的文件;private String uploadFileName, 前段是 name 属性名 + FileName,表示上传文件的名称;private String uploadContentType,前段是name属性名+ContentType,表示上传文件的 MIME 类型;
- 需要为上述的三个属性提供 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 上传文件的更多相关文章
- Struts上传文件
Struts上传文件分为两个步骤: 1). 首先将客户端上传的文件保存到Struts.multipart.saveDir键所指定的目录中,如果该键所对应的目录不存在,那么就保存到javax.servl ...
- struts 上传文件 Dynavalidatorform 实例
一.相关jar包 一个空struts工程的jar包: 另上传文件的两个jar包: 二.页面 1.上传页面upload.jsp <%@ page language="jav ...
- struts上传文件 血案
记录一个图片上传之后没有后缀 拓展名问题 平常我们查询数据都是 fileImage=fileImageService.getQuery(); 让entity等于它 那么fileImage.getF ...
- 利用Struts上传文件
在利用struts2完成上传文件到服务器时,遇到获取不到文件名 原因是在Action中的属性名没有和jsp中的属性名匹配 <%@ page language="java" i ...
- java+struts上传文件夹文件
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...
- struts上传文件报argument type mismatch错误
报错如下图所示: 报错原因:把String 强行转换成FormFile,所以才会抛出argument type mismatch.经查询:表单(html:form)中enctype="mul ...
- Struts Upload上传文件
1.Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.te ...
- 上传文件报错--Unable to find 'struts.multipart.saveDir' property setting.
struts2 上传文件时,有时候会报这个错误. Unable to find 'struts.multipart.saveDir' property setting. Defaulting to j ...
- Unable to find ‘struts.multipart.saveDir’ Struts2上传文件错误的解决方法
Unable to find ‘struts.multipart.saveDir’ Struts2上传文件错误的解决方法 在使用struts2的项目中上传文件的时候出现了一个这样的错误: 2011-7 ...
随机推荐
- Atitit.数据操作dsl 的设计 ---linq 方案
Atitit.数据操作dsl 的设计 ---linq 方案 1.1. sql与api方式1 1.2. Linq方案与stream方案的选择,1 1.3. 前缀表达式 vs 中缀表达式1 1.4. 要不 ...
- atitit.jndi的架构与原理以及资源配置and单元测试实践
atitit.jndi的架构与原理以及资源配置and单元测试实践 1. jndi架构 1 2. jndi实现原理 3 3. jndi资源配置 3 3.1. resin <database> ...
- JDBC深度封装的工具类 (具有高度可重用性)
首先介绍一下Dbutils: Common Dbutils是操作数据库的组件,对传统操作数据库的类进行二次封装,可以把结果集转化成List. 补充一下,传统操作数据库的类指的是JDBC(java ...
- unity shader(二)
- Oracle之标示符无效
一.引言 今天使用Oracle客户端执行一条sql语句 order by colname3 结果一直提示标示符无效,以为是自己把列名写错了打开表的列,一个字母一个字母的比对,还是没有错 二.原因及解决 ...
- CentOS 7下Java的SecureRandom种子初始化失败解决办法
io.netty.util.internal.ThreadLocalRandom getInitialSeedUniquifierWARNING: Failed to generate a seed ...
- 写一个php小脚本辅助渗透测试
因为一个注入要爬行一些数据,然后写的一个小脚本,能写脚本来辅助渗透,也算是里程碑.哈哈哈 <?php $num = 1; while ($num <= 39) { $web_url = & ...
- 如何使用VMWare共享Win7中的文件夹,对应Linux中的哪个目录下面?
访问 /mnt/hgfs/你设置的共享名,如果找不到这个hgfs这个文件夹,那说明你还没正确安装好 install VMware tools
- IPC之SystemV
svipc - System V interprocess communication mechanisms linux实现的System V interprocess communication ( ...
- JavaScript能否操作cookie和session?
JavaScript能否操作cookie和session? 解答:JavaScript可以操作cookie,但是不能操作session