From ad7151b14f2721b0fa40a903c6e65a2c511dd4c5 Mon Sep 17 00:00:00 2001 From: XiaoRuby <3114200645@qq.com> Date: 星期四, 27 七月 2023 15:08:13 +0800 Subject: [PATCH] LIMS管理系统框架-开发7-27第二次标准库完成修改 --- framework/src/main/java/com/yuanchu/limslaboratory/utils/FileSaveUtil.java | 69 ++++++++++++++++++++++++++++++---- 1 files changed, 61 insertions(+), 8 deletions(-) diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/utils/FileSaveUtil.java b/framework/src/main/java/com/yuanchu/limslaboratory/utils/FileSaveUtil.java index 75e28eb..1fd71d9 100644 --- a/framework/src/main/java/com/yuanchu/limslaboratory/utils/FileSaveUtil.java +++ b/framework/src/main/java/com/yuanchu/limslaboratory/utils/FileSaveUtil.java @@ -1,10 +1,16 @@ package com.yuanchu.limslaboratory.utils; +import com.yuanchu.limslaboratory.exception.MyFileException; import lombok.extern.slf4j.Slf4j; import org.apache.tomcat.util.http.fileupload.IOUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import org.springframework.util.FileSystemUtils; +import org.springframework.web.multipart.MultipartFile; +import javax.annotation.PostConstruct; import java.io.ByteArrayInputStream; +import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -16,32 +22,62 @@ public class FileSaveUtil { // 鍙杫ml涓殑璺緞 + / -// @Value("${file.path}") - private String FILE_PATH; + private static String FILE_PATH; + private static String[] ALLOWED; + + @Value("${file.path}") + private String file; + + @Value("${file.allowed}") + private String[] allowed; + + @PostConstruct + public void getFile() { + FILE_PATH = this.file; + } + + @PostConstruct + public void getAllowed(){ + ALLOWED = this.allowed; + } /** * 瀛樺偍鏂囦欢涓诲嚱鏁� - * @param content 鏂囦欢浜岃繘鍒舵祦 - * @param originalFilename 鏂囦欢鍚嶇О + * @param file 鏂囦欢浜岃繘鍒舵祦 * @return 杩斿洖鏂囦欢鍚嶇О鐢ㄤ簬瀛樺偍鏁版嵁搴� */ - public String StoreFile(byte[] content, String originalFilename) { + public static String StoreFile(MultipartFile file) { + String originalFilename = file.getOriginalFilename(); // 鐢熸垚闅忔満鍚嶇О锛氭椂闂確闅忔満6浣嶆暟瀛� String FileName = System.currentTimeMillis() + "_" + MyUtil.getNumber(6); - String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); + String suffix = null; + if (originalFilename != null) { + suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); + // 濡傛灉鍚庣紑鍚嶄笉閫氳繃鎶涘嚭寮傚父 + if (!isFileAllowed(suffix)){ + throw new MyFileException(suffix); + } + } // 鍚嶇О鎷兼帴 String fileName = FileName + suffix; // 杩涜瀛樺偍 - storeFileWithFileName(content, fileName); + try { + storeFileWithFileName(file.getBytes(), fileName); + } catch (IOException e) { + throw new RuntimeException(e); + } return fileName; } + public static Boolean DeleteFile(String fileName) { + return FileSystemUtils.deleteRecursively(new File(FILE_PATH + "/" + fileName)); + } /** * 瀛樺偍鏂囦欢鍑芥暟 * @param content 鏂囦欢浜岃繘鍒舵祦 * @param fileName 鏂囦欢鍚嶇О */ - private void storeFileWithFileName(byte[] content, String fileName) { + private static void storeFileWithFileName(byte[] content, String fileName) { // 瀛樺偍璺緞 String path = FILE_PATH + java.io.File.separatorChar; // 鐩綍涓嶅瓨鍦ㄥ垯鍒涘缓 @@ -57,4 +93,21 @@ MyUtil.PrintLog("瀛樺偍鏂囦欢寮傚父锛�" + e); } } + + /** + * 鍒ゆ柇鏂囦欢鏄惁琚厑璁镐笂浼� + * + * @param fileName 鏂囦欢鍚� + * @return 鍏佽true, 鍚﹀垯false + */ + private static boolean isFileAllowed(String fileName) { + // 鑾峰彇鍚庣紑鍚� + String suffixName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); + for (String allow : ALLOWED) { + if (allow.equals(suffixName)) { + return true; + } + } + return false; + } } -- Gitblit v1.9.3