XiaoRuby
2023-07-13 27e9d7d2c7db63c5f12c83e069980213398e8337
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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);
        }
    }
}