1. 程式人生 > >multipartfile上傳檔案

multipartfile上傳檔案

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;
		}
	}
}