SpringMVC 文件上傳2

上次寫了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;
    }
    
}
相關文章
相關標籤/搜索