From d8a687741273d121586b83745280c57f7e9d3297 Mon Sep 17 00:00:00 2001 From: XiaoRuby <3114200645@qq.com> Date: 星期一, 07 八月 2023 17:51:28 +0800 Subject: [PATCH] Merge branch 'master' of https://gitee.com/yuanchu_code/lims-management-system --- framework/src/main/java/com/yuanchu/limslaboratory/utils/FileSaveUtil.java | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 113 insertions(+), 0 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 new file mode 100644 index 0000000..1fd71d9 --- /dev/null +++ b/framework/src/main/java/com/yuanchu/limslaboratory/utils/FileSaveUtil.java @@ -0,0 +1,113 @@ +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; + +/** + * 淇濆瓨鏂囦欢宸ュ叿 + */ +@Slf4j +@Component +public class FileSaveUtil { + + // 鍙杫ml涓殑璺緞 + / + 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 file 鏂囦欢浜岃繘鍒舵祦 + * @return 杩斿洖鏂囦欢鍚嶇О鐢ㄤ簬瀛樺偍鏁版嵁搴� + */ + public static String StoreFile(MultipartFile file) { + String originalFilename = file.getOriginalFilename(); + // 鐢熸垚闅忔満鍚嶇О锛氭椂闂確闅忔満6浣嶆暟瀛� + String FileName = System.currentTimeMillis() + "_" + MyUtil.getNumber(6); + String suffix = null; + if (originalFilename != null) { + suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); + // 濡傛灉鍚庣紑鍚嶄笉閫氳繃鎶涘嚭寮傚父 + if (!isFileAllowed(suffix)){ + throw new MyFileException(suffix); + } + } + // 鍚嶇О鎷兼帴 + String fileName = FileName + suffix; + // 杩涜瀛樺偍 + 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 static void storeFileWithFileName(byte[] content, String fileName) { + // 瀛樺偍璺緞 + String path = FILE_PATH + java.io.File.separatorChar; + // 鐩綍涓嶅瓨鍦ㄥ垯鍒涘缓 + java.io.File file = new java.io.File(path); + if (!file.exists()) { + file.mkdirs(); + } + // 寮�濮嬪瓨鍌� + try (FileOutputStream os = new FileOutputStream(path + fileName); + ByteArrayInputStream is = new ByteArrayInputStream(content)) { + IOUtils.copy(is, os); + } catch (IOException e) { + 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