multipartfile上傳檔案
阿新 • • 發佈:2019-01-08
package com.cxy.utils; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.FileUtils; import org.springframework.web.multipart.MultipartFile; import com.app.biz.controller.BaseController; public class MultipartFileUtils { public static final String FILESAVEPATH1="C:\\fileSource\\gameIco";//遊戲圖示儲存路徑 public static final String FILESAVEPATH2="C:\\fileSource\\gameImg";//遊戲海報儲存地址 public static final String FILESAVEPATH3="C:\\fileSource\\gamApk";//遊戲檔案儲存路徑 public static final String MUSICSAVEPATH1="C:\\fileSource\\musicImg";//音樂海報儲存路徑 public static final String MUSICSAVEPATH2="/uploadFile/musicFilePath";//音樂檔案儲存地址 public static final String BOOKSAVEPATH1="C:\\fileSource\\bookImg";//圖書海報儲存路徑 public static final String BOOKSAVEPATH2="/uploadFile/bookFilePath";//圖書檔案儲存地址 public static Map<String, Object> saveToTomcat(HttpServletRequest request, MultipartFile attachment, String PRODUCT_IMG_SAVE_PATH) { String parentPath = request.getSession().getServletContext() .getRealPath(java.io.File.separator);// tomcat的webapp字首 String originalFilename = attachment.getOriginalFilename();// 圖片原名.png String fileNameSuffix = originalFilename.substring(originalFilename .lastIndexOf("."));// .png SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String fileName = BaseController.uuid()+fileNameSuffix;// 新的圖片名稱.png Map<String, Object> saveResult = MultipartFileUtils.saveFileToDisk( parentPath, PRODUCT_IMG_SAVE_PATH, fileName, attachment, 800 * 1024 * 1024L,request); if (!"0".equals(saveResult.get("status").toString())) { // 儲存失敗 return BaseController.outData("0001", saveResult.get("msg") .toString(), null); } String save_path = (String) saveResult.get("save_path");// 儲存的路徑名 saveResult.get("old_name");// 上傳時的檔名 QQ圖片20161226133411.png} return BaseController.outData("0000", save_path, null); } public static Map<String, Object> saveToDisk(HttpServletRequest request, MultipartFile attachment, String PRODUCT_IMG_SAVE_PATH) { String originalFilename = attachment.getOriginalFilename();// 圖片原名.png String fileNameSuffix = originalFilename.substring(originalFilename .lastIndexOf("."));// .png String fileName = BaseController.uuid()+fileNameSuffix;// 新的圖片名稱.png Map<String, Object> saveResult = MultipartFileUtils.saveFileToDisk( "", PRODUCT_IMG_SAVE_PATH, fileName, attachment, 800 * 1024 * 1024L,request); if (!"0".equals(saveResult.get("status").toString())) { // 儲存失敗 return BaseController.outData("0001", saveResult.get("msg") .toString(), null); } String save_path = (String) saveResult.get("save_path");// 儲存的路徑名 saveResult.get("old_name");// 上傳時的檔名 QQ圖片20161226133411.png} return BaseController.outData("0000", save_path, null); } /** * @param request * @param fileUrl 刪除的檔案路徑 * @throws IOException */ public static void deleteOld(HttpServletRequest request, String fileUrl) throws IOException { // String parentPath = request.getSession().getServletContext() // .getRealPath(File.separator); String url = fileUrl; File file = new File(url); if(!file.isDirectory()){ if (file.exists()) { file.delete(); } }else {//是資料夾則刪除路徑下的所有資料夾 FileUtils.deleteDirectory(file); } } /** * 儲存檔案到磁碟 */ private static Map<String, Object> saveFileToDisk(String parentPath, String PRODUCT_IMG_SAVE_PATH, String fileName, MultipartFile file, long maxSize,HttpServletRequest request) { Map<String, Object> result = new HashMap<String, Object>(); if (file == null || file.isEmpty() || file.getSize() <= 0) { result.put("status", "1"); result.put("msg", "檔案為空"); return result; } // 檢查檔案大小,800M if (file.getSize() > maxSize) { result.put("status", "1"); result.put("msg", "檔案過大"); return result; } try { int endIndex = 0; // String parentPathUrl = parentPath.getPath(); // endIndex = parentPathUrl.indexOf(BaseController.getProjectName(request)); // System.out.println(parentPathUrl.substring(0, endIndex)); // String savePath = parentPathUrl.substring(0, endIndex); String filePath = parentPath+ PRODUCT_IMG_SAVE_PATH + "/" + fileName;// D:\workspace\sms_boss\src\main\webapp\\sms_check_file\passway\sign_20170302062136381.png System.out.println(filePath); File saveDir = new File(filePath); if (saveDir.isFile() && saveDir.exists()) { result.put("status", "1"); result.put("msg", "檔名重複"); return result; } if (!saveDir.getParentFile().exists()) { saveDir.getParentFile().mkdirs(); } System.out.println("save path ... : " + saveDir.getPath()); // 轉存檔案 file.transferTo(saveDir); System.out.println("save file success : " + saveDir.getPath()); result.put("status", "0"); result.put("save_path", PRODUCT_IMG_SAVE_PATH + "/" + fileName);// 儲存的路徑名 // \sms_check_file\passway\sign_20170302063551308.png result.put("old_name", file.getOriginalFilename());// 上傳時的檔名 // QQ圖片20161226133411.png return result; } catch (Exception e) { e.printStackTrace(); result.put("status", "1"); result.put("msg", "儲存失敗"); return result; } } }