package com.yuanchu.limslaboratory.utils; import lombok.extern.slf4j.Slf4j; import org.apache.tomcat.util.http.fileupload.IOUtils; import org.springframework.stereotype.Component; import java.io.ByteArrayInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * 保存文件工具 */ @Slf4j @Component public class FileSaveUtil { // 取yml中的路径 + / // @Value("${file.path}") private String FILE_PATH; /** * 存储文件主函数 * @param content 文件二进制流 * @param originalFilename 文件名称 * @return 返回文件名称用于存储数据库 */ public String StoreFile(byte[] content, String originalFilename) { // 生成随机名称:时间_随机6位数字 String FileName = System.currentTimeMillis() + "_" + MyUtil.getNumber(6); String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); // 名称拼接 String fileName = FileName + suffix; // 进行存储 storeFileWithFileName(content, fileName); return fileName; } /** * 存储文件函数 * @param content 文件二进制流 * @param fileName 文件名称 */ private 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); } } }