控制器的方法
public ResultMap fileUpload(@RequestParam("file") MultipartFile file) {
String pictureName = DateUtil.getAllTime();
//獲取壓縮后的圖片名稱,隨機生成
String smallerPictureName = UUID.randomUUID().toString();
try {
//未壓縮前的上傳路徑
String fileSavePath = getFileUploadPath() + "/image/" + pictureName + ".jpg";
File tempFile = new File(fileSavePath);
file.transferTo(tempFile);
//壓縮后的路徑
String smallFileSavePath = getFileUploadPath()+"/image/"+smallerPictureName+".jpg";
//獲取文件大小 KB
long size = file.getSize()/1024;
//判斷文件大小對圖片質量進行壓縮,尺寸不變,范圍0.01~1.0,值越低壓縮效率越高。圖片低於600K不進行壓縮
if(size>=7380){
Thumbnails.of(fileSavePath).scale(1f).outputQuality(0.01f).toFile(smallFileSavePath);
tempFile.delete();
return getResultMap(SUCCESS_CODE,smallerPictureName);
}else if(size>=4096&&size<7380){
Thumbnails.of(fileSavePath).scale(1f).outputQuality(0.2f).toFile(smallFileSavePath);
tempFile.delete();
return getResultMap(SUCCESS_CODE,smallerPictureName);
}else if(size>=1024&&size<4096){
Thumbnails.of(fileSavePath).scale(1f).outputQuality(0.3f).toFile(smallFileSavePath);
tempFile.delete();
return getResultMap(SUCCESS_CODE,smallerPictureName);
}else if(size>=600&&size<1024){
Thumbnails.of(fileSavePath).scale(1f).outputQuality(1f).toFile(smallFileSavePath);
tempFile.delete();
return getResultMap(SUCCESS_CODE,smallerPictureName);
}else{
return getResultMap(SUCCESS_CODE,pictureName);
}
} catch (Exception e) {
return getResultMap(ERROR_CODE,"圖片上傳失敗,請稍后重試,或聯系管理員");
}
}
HTML頁面
layui.use(['form','layer','upload'], function(){
var $ = layui.$, form = layui.form, upload = layui.upload, layer = layui.layer;
// 上傳縮略圖
upload.render({
elem: '.thumbBox',
data: {typePicture: $('#typePicture').val(), sortPicture: $('#sortPicture').val()},
url: '/kaptcha/fileUpload',
before: function(obj){
//預讀本地文件,如果是多文件,則會遍歷。(不支持ie8/9)
layer.load();
obj.preview(function(index, file, result){
$('.thumbImg').attr('src', result);
});
},
done: function(res){
// alert("圖片上傳成功嗎,保存后生效");
layer.closeAll('loading');
$("#pictureId").val(res.data);
$('.thumbBox').css("background","#fff");
if(res.code != 0){
alert(res.data);
}
}
});
HTML頁面是我目前所用的,可能會有許多不足,多多見諒!
我只是一個小白