/* ==================================================================
* 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;
}
}