上次寫了SpringMVC文件上傳的工具類,因爲項目須要,後來又添加了圖片壓縮的功能,那此次來看看圖片上傳時的圖片壓縮處理:java
1,首先引入圖片壓縮的Jar包(maven路徑):web
<!-- 圖片壓縮 --> <dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.8</version> </dependency>
2,在代碼中使用:spring
package com.xt.shop.until.img; import java.io.File; import java.io.IOException; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import org.springframework.web.multipart.MultipartFile; import com.xt.shop.until.IsNull; import net.coobird.thumbnailator.Thumbnails; public class UploadUtil { private static final String PATH = "yjwxFiles"; //服務器文件上傳地址 /** * @description TODO 修改圖片上傳路徑與項目路徑平級 * @param request * @return String 圖片上傳路徑 * @date 2017年12月7日上午10:03:41 * @author geYang **/ private static String getURL(HttpServletRequest request){ //獲取項目名 String appName = request.getSession().getServletContext().getContextPath(); appName = appName.substring(1, appName.length()); System.out.println("該上傳項目名:"+appName); //獲取項目路徑 String url = request.getSession().getServletContext().getRealPath("/"); url = url.substring(0, url.length()-1); System.out.println("上傳項目路徑:"+url); //String appName = url.substring(url.lastIndexOf("\\")+1); //編輯項目文件上傳路徑 url = url.replace(appName, PATH); System.out.println("上傳基礎路徑:"+url); return url; } /** * <p>方法說明:文件刪除方法 * <p>參數說明:String fileName 將要刪除的文件名 * <p>返回說明:成功 | 錯誤 消息 * <p>建立人: geYang * <p>建立時間:2017.8.2 */ public static boolean delete(HttpServletRequest request, String fileName){ if(IsNull.isNull(fileName)){ return false; }else{ String realPath = getURL(request)+fileName; //輸入要刪除的文件位置 File f = new File(realPath); if(f.exists() && !f.isDirectory()){ f.delete(); System.out.println("刪除文件:"+realPath); return true; } return false; } } /** * <p>方法說明:文件上傳路徑處理(圖片大於500KB壓縮) * <p>參數說明:MultipartFile file 上傳的文件 * <p>參數說明:String saveUrl 文件存放路徑 * <p>參數說明:HttpServletRequest * <p>返回說明:String imgName 返回上傳後文件名(包括路徑) * @throws IOException * @throws IllegalStateException * */ public static String uploadFile(MultipartFile file,HttpServletRequest request,String saveUrl) throws IllegalStateException, IOException{ String originalName = file.getOriginalFilename(); //獲取文件原先名稱 String suffix= originalName.substring(originalName.lastIndexOf(".")); //取到上傳圖片的後綴名 String uuid = UUID.randomUUID()+suffix; //隨機生成圖片名字 //獲取圖片存入地址 String realPath = getURL(request)+saveUrl; System.out.println("文件上傳路徑:"+realPath); File files = new File(realPath); //判斷該路徑文件夾是否存在 if(!files.exists()||!files.isDirectory()){ files.mkdirs(); //建立文件夾 } //文件上傳地址 String filePath = realPath+uuid; System.out.println("文件上傳地址:"+filePath); //將圖片存入以上地址 file.transferTo(new File(filePath)); //文件大於500KB,文件進行壓縮 if(file.getSize()>500*1024){ Thumbnails.of(filePath).scale(1f).outputQuality(0.25f).toFile(filePath); } return saveUrl+uuid; } }