Struts中文件上传的一些规则...

2022-12-01,,

1、action中定义规范

      如果jsp中file的name="xxx",那么后台action中的属性要做相应更改为
private File xxx;
private String xxxContentType;
private String xxxFileName;
同时注意大小写一定要一致

例:jsp:

<form action="AttendanceAction_daoru.do" method="post" enctype="multipart/form-data">
  <input type="file" value="请选择" name="file"/>
  <input type="submit" value="导入"/>
</form>

  action:

   private File file;  //注意,file并不是指前端jsp上传过来的图片文件本身,而是文件上传过来存放在临时文件夹下面的文件
private String fileFileName;  //提交过来的file的名字
private String fileContentType; get...
set...

2、获取上传文件的后缀名

<1> 通过javascript校验来限制,这个比较简单,获取input的value然后截取扩展名进行判断即可 或者通过传入后台的fileFileName截取扩展名判断:

  

 String extName = "";//文件后缀名

 if (imageFileName.lastIndexOf(".") >= 0){
extName = imageFileName.substring(imageFileName.lastIndexOf("."));
}

<2>根据struts2自带的fileupload拦截器中提供的allowedTypes来进行限制,步骤如下:

maximumSize (可选) - 这个拦截器允许的上传到action中的文件最大长度(以byte为单位). 注意这个参数和在webwork.properties中定义的属性没有关系,默认2MB
allowedTypes (可选) - 以逗号分割的contentType类型列表(例如text/html),这些列表是这个拦截器允许的可以传到action

3、上传的文件为确保Id的唯一性,需要修改文件名,如下:

    //生成随机文件名:当前年月日时分秒+五位随机数(为了在实际项目中防止文件同名而进行的处理)
int rannum = (int) (new Random().nextDouble() * (99999 - 10000 + 1)) + 10000; //获取随机数
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); //时间格式化的格式
String nowTimeStr = sDateFormat.format(new Date()); //当前时间
String extName = "";//文件后缀名
//获取拓展名
if (imageFileName.lastIndexOf(".") >= 0){
extName = imageFileName.substring(imageFileName.lastIndexOf("."));
}
imageFileName = nowTimeStr + rannum + extName;  //保存到数据库中的文件名

Struts中文件上传的一些规则...的相关教程结束。

《Struts中文件上传的一些规则....doc》

下载本文的Word格式文档,以方便收藏与打印。