k94314517
2024-10-30 47a53d22a025c0ed095c9c4ed2e1ce35ce54184e
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
package com.doumee.core.oss;
 
import com.doumee.core.utils.ID;
import lombok.Cleanup;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
 
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Map;
 
/**
 * 附件上传
 */
@Service
public class UploadFileService {
 
 
    @Autowired
    private AliOssService aliOssService;
 
    public FileModel uploadWxCode(InputStream inputStream,String id) throws Exception{
        MultipartFile multipartFile = new MockMultipartFile(id+".png",id+".png","", inputStream);
        return this.uploadAliOssFile(multipartFile,"wxCode",true);
    }
 
    /**
     * 2、上传阿里云OSS
     *
     * @param file:                    表单文件
     * @param model:是否存在目录
     * @param ifCreateFileName:是否创建新名字 true/false
     */
    public FileModel uploadAliOssFile(MultipartFile file, String model, Boolean ifCreateFileName) {
        FileModel res = new FileModel();
        //OSS
        String origin=FileContent.fileOrigin.get(1);
        //原文件名(如:xxxx.doc)
        String originalFilename = file.getOriginalFilename();
        //文件后缀(如:doc)
        String suffix = originalFilename.substring(file.getOriginalFilename().lastIndexOf(".") + 1);
        //文件名
        String fileName = ifCreateFileName ? ID.nextGUID() + originalFilename.substring(file.getOriginalFilename().lastIndexOf(".")) : originalFilename;
        //--------OOS文件存放根路径---------
        String fullFileName = this.getRootPath(model,fileName);
        res.setOrigin(origin);
        res.setSuffix(suffix);
        //新文件名
        res.setNewFilename(fileName);
        //原文件名
        res.setFileName(originalFilename);
        res.setFilePath(fullFileName);
        try {
            Map map = aliOssService.uploadFile(fullFileName, file.getInputStream());
            String code = map.get("code").toString();
            String url = map.get("url").toString();
            String msg = map.get("msg").toString();
            if (code.equals("200")) {
                res.setCode(0);
                res.setFileUrl(url);
                res.setMsg(msg);
            } else {
                res.setCode(-1);
                res.setMsg(msg);
            }
        } catch (Exception e) {
            e.printStackTrace();
            res.setMsg(e.getMessage());
            res.setCode(-1);
        }
        return res;
    }
 
 
    /**
     * 获取根目录及下载URL
     *
     * @param model
     * @param fileName
     * @return
     */
    public String getRootPath(String model, String fileName) {
        String time = LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE);
        //根目录
        String catalog = "file";
        String oss_doc= time+ "/" + model + "/" + fileName;
        if(StringUtils.isNotBlank(catalog)){
            oss_doc=catalog.trim()+"/"+oss_doc;
        }
        return oss_doc;
    }
}