2021与蓝度共同重构项目,服务端
chenjiantian
2021-11-24 6bdb5dda11b8723ddc20a37b9cbcc1e1fdace13a
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package com.sandu.common.file.impl;
 
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.io.FileTypeUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.UUID;
import com.sandu.common.enums.FileStorageEnums;
import com.sandu.common.execption.BusinessException;
import com.sandu.common.file.FileUploadDto;
import com.sandu.common.file.IFileUpload;
import com.sandu.common.file.config.FileProperties;
import com.sandu.common.util.SpringContextHolder;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.multipart.MultipartFile;
 
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.time.LocalDate;
import java.util.List;
import java.util.Optional;
 
/**
 * @author chenjiantian 本地服务器上传
 */
@Slf4j
@AllArgsConstructor
public class LocalFileUploadImpl implements IFileUpload {
 
    private static List<String> videoSuffixList = CollectionUtil.newArrayList("mp4", "mov", "avi", "mkv", "m4v", "wmv",
            "asf", "asx", "rm", "rmvb", "3gp", "dat", "flv", "vob");
 
    @Override
    public FileUploadDto uploadFile(MultipartFile multipartFile) {
        FileProperties fileProperties = SpringContextHolder.getBean(FileProperties.class);
        String originalFilename = multipartFile.getOriginalFilename();
        long size = multipartFile.getSize();
        String suffix = FileUtil.getSuffix(originalFilename);
        String date = LocalDateTimeUtil.formatNormal(LocalDate.now());
        String fileName = UUID.fastUUID().toString() + "." + suffix;
        File dest;
        try {
            String type = Optional.ofNullable(FileTypeUtil.getType(multipartFile.getInputStream(), originalFilename)).orElse("");
            dest = new File(fileProperties.getUploadRootPath() + type + File.separator + date + File.separator + fileName).getCanonicalFile();
 
            if (!dest.getParentFile().exists()) {
                dest.getParentFile().mkdirs();
            }
            multipartFile.transferTo(dest);
 
        } catch (Exception e) {
            e.printStackTrace();
            throw new BusinessException(e.getMessage());
        }
 
        FileUploadDto uploadDto = new FileUploadDto();
        uploadDto.setOriginName(originalFilename);
        uploadDto.setFileName(fileName);
        uploadDto.setFileUrl(dest.getPath().replace(fileProperties.getUploadRootPath(), ""));
        uploadDto.setFileType(FileUtil.getType(dest));
        uploadDto.setStorageType(FileStorageEnums.LOCAL.getCode());
        uploadDto.setFileSize(size);
 
        if (IMAGE_SUFFIX_LIST.contains(uploadDto.getFileType())) {
            BufferedImage img = null;
            try {
                img = ImageIO.read(dest);
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (img != null && img.getWidth() >= 0 && img.getHeight() >= 0) {
                uploadDto.setWidth(img.getWidth());
                uploadDto.setHeight(img.getHeight());
            }
        }
 
        return uploadDto;
    }
 
    public FileUploadDto uploadCert(MultipartFile multipartFile) {
        String originalFilename = multipartFile.getOriginalFilename();
        long size = multipartFile.getSize();
        String suffix = FileUtil.getSuffix(originalFilename);
        String date = LocalDateTimeUtil.formatNormal(LocalDate.now());
        String fileName = UUID.fastUUID().toString() + "." + suffix;
        File dest;
        try {
            String type = Optional.ofNullable(FileTypeUtil.getType(multipartFile.getInputStream(), originalFilename)).orElse("");
//            dest = new File(fileProperties.getUploadRootPath() + type + File.separator + date + File.separator + fileName).getCanonicalFile();
 
//            if (!dest.getParentFile().exists()) {
//                dest.getParentFile().mkdirs();
//            }
//            multipartFile.transferTo(dest);
 
        } catch (Exception e) {
            e.printStackTrace();
            throw new BusinessException(e.getMessage());
        }
 
        FileUploadDto uploadDto = new FileUploadDto();
        uploadDto.setOriginName(originalFilename);
        uploadDto.setFileName(fileName);
//        uploadDto.setFileUrl(dest.getPath());
//        uploadDto.setFileType(FileUtil.getType(dest));
        uploadDto.setStorageType(FileStorageEnums.LOCAL.getCode());
        uploadDto.setFileSize(size);
        return uploadDto;
    }
}