SpringMVC中文件上传的客户端验证
客户端验证主要思想:在jsp页面中利用javascript进行对文件的判断,完成验证后允许上传
验证步骤:1.文件名称
2.获取文件的后缀名称
3.判断哪些文件类型允许上传
4.判断文件大小
5.满足条件后跳转后台实现上传
前台界面(验证上传文件是否格式满足要求):
<body>
<h2>文件上传</h2>
<form action="upload01" method="post" enctype="multipart/form-data" onsubmit="return toSub();">
上传者姓名:<input type="text" name="user_name"><br>
文件:<input type="file" name="myfile" id="myfile">
<button>上传</button>
</form>
<script type="text/javascript">
function toSub(){//首先浏览器支持html5
var myfile=document.getElementById("myfile").files[0];
if(myfile){
//1.文件名称2.获取文件的后缀名称3.判断哪些文件类型允许上传4.判断文件大小
var fileName=myfile.name;
//2.获取文件的后缀名称
var ext=fileName.substring(fileName.lastIndexOf(".")+1);
//3.判断哪些文件类型允许上传
var allowFiles=["jpg","png","docx","doc"];
var flag=false;
for(var i=0;i<allowFiles.length;i++){
if(ext.toLowerCase()==allowFiles[i]){
flag=true;
break;
}
}
if(!flag){
alert("上传文件格式不正确,允许格式为:"+allowFiles.join(" | "));
return false;
}
//4.判断文件大小
var maxFileUploadSize=1024*1024*20;
if(myfile.size>maxFileUploadSize){
alert("您上传文件大小为:"+myfile.size+",大于规定大小:"+maxFileUploadSize);
return false;
}
return true;
}else{
alert("选择上传文件");
return false;
}
}
</script>
</body>
后台上传:
String path=request.getServletContext().getRealPath("/attr/");
//建立将要存储在当前服务环境下的文件
File folder=new File(path);
if(!folder.exists()){
//判断此文件夹是否存在
folder.mkdirs();
//不存在则创建文件夹(可以建立多层的mkdirs()方法)
}
//判断上传文件的姓名
String filename=myfile.getOriginalFilename();
//.获取上传文件的后缀名,例如jpg,docx
String ext=FilenameUtils.getExtension(filename);
//新建新的上传文件的文件名
String newFile=new Date().getTime()+"_"+new Random().nextInt(10000)+"."+ext;
//(上面是时间戳方式)
//(另一种方式完成)String newFile=UUID.randomUUID().toString()+"."+ext
//完成上传
myfile.transferTo(new File(path+File.separator+newFile));
return "jsp/result";
-
-------------------------------end