<后台校验>
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.web.multipart.MultipartFile;
public class MultipartFileValidator {
// 默认的上传文件大小1M
private final static long MAX_SIZE=1024*1024;
//文件大小上限
private long maxSize = MAX_SIZE;
//可接受的文件content-type
private String[] allowedContentTypes;
//设置上传文件上限值
public void setMaxSize(long maxSize) {
this.maxSize = MAX_SIZE*maxSize; }
//设置上传文件类型
public void setAllowedContentTypes(String[] allowedContentTypes) {
this.allowedContentTypes = allowedContentTypes;}
//文件校验
public void validate(MultipartFile file) throws Exception{
if(file != null && !file.isEmpty()){
//1.检查文件大小
if(file.getSize()<=0)
throw new Exception("The multipart file is null!");
if(file.getSize()>maxSize)
throw new MaxUploadSizeExceededException(maxSize);
//2.检查文件类型
String filename=file.getOriginalFilename();
String extensionName = filename.substring(filename.lastIndexOf("."), filename.length()).toLowerCase();
if(!ArrayUtils.contains(allowedContentTypes, extensionName))
throw new Exception("The content type '"+file.getContentType()+"'is not a valid content type !");
}
}
}
<前台JS校验>
[html标签:] <input type="file" id="file_id" onchange="validateFile()"/>
[Js函数脚本:] 引入Jquery1.7脚本文件:
<script type="text/javascript" src="/pages/js/jquery-1.7.js"></script>
<script type="text/javascript">
var fileChk={
filetypes:[".jpg",".png",".rar",".txt",".zip",".doc",".ppt",".xls",".pdf",".docx",".xlsx"],
filemaxsize:1024*1024*20,//单位bytes,大小20M
errinfo:{
fileNotExists:"您选择的文件不存在!",
fileSizeNull:"您选择的文件为空文件!",
fileOutSize:"您选择的文件大小超过上限值(20M)",
fileTypeError:"目前仅支持如下类型文件[.jpg,.png,.rar,.txt,.zip,.doc,.ppt,.xls,.pdf,.docx,.xlsx]"
}
};
//判断元素是否为空
function isNotNull(obj){
if(obj==null||obj==''||obj==undefined){
return false;
}else{
return true;
}
};
//校验文件
function validateFile(){
var file=$("#file_id")[0].files[0];
//文件空校验
if(!isNotNull(file)){
return fileChk.errinfo.fileNotExists;
}else{
var filename = file.name;//文件名称
var filesize = file.size; //文件大小
var filetypes =fileChk.filetypes;
var filemaxsize = chks.filemaxsize;
//文件类型校验
if(isNotNull(filename)){
var isflag=false;
//获取文件扩展名
var extensionName = filename.substring(filename.lastIndexOf("."),filename.length).toLowerCase();
if(isNotNull(filetypes) && filetypes.length>0){
for(var t in filetypes){
if(filetypes[t]==extensionName){
isflag=true;
break;
}
}
}
if(!isflag){
return fileChk.errinfo.fileTypeError;
}
}
//文件大小校验
if(filesize<=0){
return fileChk.errinfo.fileSizeNull;
}else if(filesize>filemaxsize){
return fileChk.errinfo.fileOutSize;
}
}
};
</script>