/* ================================================================== * Created [2009-4-27 下午11:32:55] by Jon.King * ================================================================== * TSS * ================================================================== * mailTo:jinpujun@hotmail.com * Copyright (c) Jon.King, 2009-2012 * ================================================================== */ package com.jinhe.tss.component.support.web.upload; import java.io.File; import java.util.Arrays; import java.util.List; import java.util.Map; /** * <p> SuffixFileValidator.java </p> * <p> * 文件上传时根据文件后缀检测是否允许上传,如果不允许则返回false,否则返回true * </p> */ public class SuffixFileValidator implements IFileUploadValidator { /** 允许使用的文件后缀(用以限制文件必须为哪几种类型) */ private String allowSuffix; /** 禁止使用的文件后缀 */ private String forbiddenSuffix; public boolean validate(File file, Map<String, String> params) { // 得到文件后缀名 String suffix = getFileSuffix(file); // 得到允许后缀名列表 List<String> allowSuffixes = getSuffixes(allowSuffix); // 得到禁止后缀名列表 List<String> forbiddenSuffixes = getSuffixes(forbiddenSuffix); // 判断文件合法性 if ((allowSuffixes != null && !allowSuffixes.contains(suffix)) || (forbiddenSuffixes != null && forbiddenSuffixes.contains(suffix))) { return false; } return true; } public String getErrorMessage() { return "上传文件不合法,请按要求上传文件"; } /** * 根据后缀字符串获取List列表 */ private List<String> getSuffixes(String suffix) { if (suffix == null) return null; return Arrays.asList(suffix.split(",")); } /** * 得到文件后缀名 */ private String getFileSuffix(File file) { String name = file.getName(); if (name != null) { int index = name.lastIndexOf("."); if (index > -1) { return name.substring(index + 1); } } return ""; } /** * 设置允许上传文件后缀 */ public void setAllowSuffix(String allowSuffix) { this.allowSuffix = allowSuffix; } /** * 设置禁止上传文件后缀 */ public void setForbiddenSuffix(String forbiddenSuffix) { this.forbiddenSuffix = forbiddenSuffix; } }