SpringMVC-3 FileUpload-1.2 文件上传

<后台校验>

    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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值