query 验证图片的格式代码如下:
<script type="text/javascript">
<script type="text/javascript">
function img() {
var str = $("#fileName").val();
var pos = str.lastIndexOf(".");
var lastname = str.substring(pos, str.length);
if (lastname.toLowerCase() != ".jpg" && lastname.toLowerCase() != ".jpeg" && lastname.toLowerCase() != ".gif" && lastname.toLowerCase() != ".bmp" && lastname.toLowerCase() != ".png") {
alert("您上传的文件类型为" + lastname + ",图片必须为.jpg,.jpeg,.gif,.bmp,.png类型")
return false;
}
else {
return true;
}
}
</script>
注意 :要是验证大小的话,我建议 还是去后台验证吧。前台还要判断浏览器的种类 ,版本 。况且还有些属性浏览器不支持。
<input type="file" name="fileToUpload" id="fileToUpload" οnchange="upload()"/>
注意 :使用jquery的ajaxFileUpload 上传 是要 使用name 和 id 属性的;
首先看看js 前台代码怎么实现:
<script type="text/javascript">
function upload() {
//alert($('#vfile').val());
//if(__.checkFile()==false) return;
$.({
url:'/application/checkPic.do', //需要链接到服务器地址
fileElementId:'fileToUpload', //文件选择框的id属性
dataType: 'text', //服务器返回的格式,可以是json
success: function (data, status){ //相当于java中try语句块的用法
var data=eval("("+data+")");//转换为json对象
if(data.result =="1"){
$('#photo').val(data.obj);
$("#img").attr("src", '<%=basePath %>' + data.obj);
$("#img").show();
return true;
}
if(data.result =="2"){
$.messager.alert('系统提示','图片必须为jpg、jpeg、gif、bmp、png类型!');
$('#fileToUpload').val('');
return false;
}
if(data.result =="3"){
$.messager.alert('系统提示','图片过大,不能超过1M!');
$('#fileToUpload').val('');
return false;
}
},
error: function (data, status, e) //相当于java中catch语句块的用法
{
}
});
},
</script>
controller 源码奉上:
/**
*
* 描述 保存上传文件
* @author guochenglin
* @createDate 2014-8-28
* @param path
* @param file
* @return
* @throws IllegalStateException
* @throws IOException
*/
public static Object[] saveUploadFile(String path, MultipartFile file)
throws IllegalStateException, IOException {
Object[] obj = new Object[2];
// if (file == null)
// return "";
String flag = "";
String fileName = file.getOriginalFilename();
//扩展名
String suffixName = fileName.substring(fileName.lastIndexOf("."),fileName.length());
String name = System.currentTimeMillis()+suffixName;
//图片大小
Long fileSize = file.getSize();
File targetFile = new File(path, name);
//验证格式
List<String> fileTypes = new ArrayList<String>();
fileTypes.add(".jpg");
fileTypes.add(".jpeg");
fileTypes.add(".bmp");
fileTypes.add(".gif");
fileTypes.add(".png");
if(fileTypes.contains(suffixName.toLowerCase()) && fileSize <=1024*1024 ){
if(!targetFile.exists())
targetFile.mkdirs();
file.transferTo(targetFile);
flag="1";
}else if(!fileTypes.contains(suffixName.toLowerCase())){
flag="2";
}else if(fileSize>1024*1024){
flag="3";
}
obj[0] =flag;
obj[1] =name;
return obj;
}
注意 :要是验证大小的话,我建议 还是去后台验证吧。前台还要判断浏览器的种类 ,版本 。况且还有些属性浏览器不支持。
<input type="file" name="fileToUpload" id="fileToUpload" οnchange="upload()"/>
注意 :使用jquery的ajaxFileUpload 上传 是要 使用name 和 id 属性的;
首先看看js 前台代码怎么实现:
<script type="text/javascript">
function upload() {
//alert($('#vfile').val());
//if(__.checkFile()==false) return;
$.({
url:'/application/checkPic.do', //需要链接到服务器地址
fileElementId:'fileToUpload', //文件选择框的id属性
dataType: 'text', //服务器返回的格式,可以是json
success: function (data, status){ //相当于java中try语句块的用法
var data=eval("("+data+")");//转换为json对象
if(data.result =="1"){
$('#photo').val(data.obj);
$("#img").attr("src", '<%=basePath %>' + data.obj);
$("#img").show();
return true;
}
if(data.result =="2"){
$.messager.alert('系统提示','图片必须为jpg、jpeg、gif、bmp、png类型!');
$('#fileToUpload').val('');
return false;
}
if(data.result =="3"){
$.messager.alert('系统提示','图片过大,不能超过1M!');
$('#fileToUpload').val('');
return false;
}
},
error: function (data, status, e) //相当于java中catch语句块的用法
{
}
});
},
</script>
controller 源码奉上:
/**
*
* 描述 保存上传文件
* @author guochenglin
* @createDate 2014-8-28
* @param path
* @param file
* @return
* @throws IllegalStateException
* @throws IOException
*/
public static Object[] saveUploadFile(String path, MultipartFile file)
throws IllegalStateException, IOException {
Object[] obj = new Object[2];
// if (file == null)
// return "";
String flag = "";
String fileName = file.getOriginalFilename();
//扩展名
String suffixName = fileName.substring(fileName.lastIndexOf("."),fileName.length());
String name = System.currentTimeMillis()+suffixName;
//图片大小
Long fileSize = file.getSize();
File targetFile = new File(path, name);
//验证格式
List<String> fileTypes = new ArrayList<String>();
fileTypes.add(".jpg");
fileTypes.add(".jpeg");
fileTypes.add(".bmp");
fileTypes.add(".gif");
fileTypes.add(".png");
if(fileTypes.contains(suffixName.toLowerCase()) && fileSize <=1024*1024 ){
if(!targetFile.exists())
targetFile.mkdirs();
file.transferTo(targetFile);
flag="1";
}else if(!fileTypes.contains(suffixName.toLowerCase())){
flag="2";
}else if(fileSize>1024*1024){
flag="3";
}
obj[0] =flag;
obj[1] =name;
return obj;
}