上传文件类型验证工具类

1、定义合法文件类型的配置文件 allowuploadfiletype.properties

gif=image/gif
jpg=image/jpg,image/jpeg,image/pjpeg
bmp=image/bmp
png=image/png
swf=application/x-shockwave-flash
doc=application/msword
txt=text/plain
xls=application/vnd.ms-excel
ppt=application/vnd.ms-powerpoint
pdf=application/pdf
exe=application/octet-stream


2、验证工具类(从配置文件中读取可上传文件类型)

package cn.changtusoft.publicplatform.web.forms;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Set;

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

public class Utils {

/**
* 存放可上传文件,从配置文件中读取
*
* 采用单例模式,只在类加载的时候读取一次,提高性能
*/
private static Properties pros = new Properties();
static {
try {
pros.load(BaseActionForm.class.getClassLoader().getResourceAsStream("allowuploadfiletype.properties"));
} catch (IOException e) {
System.out.println("读取定义允许上传文件的配置文件失败!!!");
e.printStackTrace();
}
}


/**
* 验证允许上传文件类型
*
* @param formfile
* @return
*/
public boolean validateFileType(FormFile formfile) {
if(formfile!=null && formfile.getFileSize()>0){

// 用来保存合法文件类型
List<String> allowType = new ArrayList<String>();
Set keySet = pros.keySet();
Iterator ite = keySet.iterator();
while (ite.hasNext()) {
String key = (String)ite.next();
String values = pros.getProperty(key);
// 转换为数组,类型
String[] valueArray = values.split(",");
for (String v : valueArray) {
allowType.add(v);
}
}

// 文件后缀名
String ext = getFileExt(formfile);

// 既判断文件的类型,也判断文件的后缀名,确保安全性
return allowType.contains(formfile.getContentType().toLowerCase()) && pros.keySet().contains(ext);
}
return false;
}

/**
* 验证上传图片格式是否合法
*
* @param formfile
* @return
*/
public boolean validateImageFileType(FormFile formfile) {
if(formfile!=null && formfile.getFileSize()>0){
List<String> arrowType = Arrays.asList("image/bmp","image/png","image/gif","image/jpg","image/jpeg","image/pjpeg");
return arrowType.contains(formfile.getContentType().toLowerCase());
}

return false;
}

/**
* 获取文件后缀名
*
* 如:abc.gif ===> gif
*
* @param formFile
* @return
*/
public String getFileExt(FormFile formFile) {
if (formFile != null) {
String fileName = formFile.getFileName();
return fileName.substring(fileName.lastIndexOf(".")+1);
}
return null;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值