package com.baidu.disconf.web.web.config.validator;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import com.baidu.dsp.common.exception.FieldException;
/**
* @author liaoqiqi
* @version 2014-2-20
*/
@Component
public class FileUploadValidator {
protected static final Logger LOG = LoggerFactory.getLogger(FileUploadValidator.class);
/**
* 验证文件大小,文件名,文件后缀
*
* @param file
* @param maxLength
* @param allowExtName
*/
public void validateFile(MultipartFile file, long maxLength, String[] allowExtName) {
if (file.isEmpty()) {
throw new FieldException("file", "您没有上传文件", null);
}
// 文件大小
if (file.getSize() < 0 || file.getSize() > maxLength) {
throw new FieldException("file", "文件不允许超过" + String.valueOf(maxLength), null);
}
//
// 处理不选择文件点击上传时,也会有MultipartFile对象,在此进行过滤
//
String filename = file.getOriginalFilename();
if (filename == "") {
throw new FieldException("file", "文件名不能为空", null);
}
//
// 文件名后缀
//
/*
if (filename.contains(".")) {
String extName = filename.substring(filename.lastIndexOf(".")).toLowerCase();
if (allowExtName == null || allowExtName.length == 0 || Arrays.binarySearch(allowExtName, extName) >= 0) {
} else {
//throw new FieldException("file", "文件后缀不允许", null);
}
} else {
//throw new FieldException("file", "文件后缀不允许", null);
}*/
}
/**
* 验证文件大小,文件名,文件后缀
*
* @param files
* @param maxLength
* @param allowExtName
*
* @return
*/
public List<MultipartFile> validateFiles(List<MultipartFile> files, long maxLength, String[] allowExtName) {
List<MultipartFile> retFiles = new ArrayList<MultipartFile>();
for (MultipartFile multipartFile : files) {
try {
this.validateFile(multipartFile, maxLength, allowExtName);
retFiles.add(multipartFile);
} catch (Exception e) {
LOG.warn(e.toString());
}
}
return retFiles;
}
}