puzhibing
2023-10-08 22199bbdda579861736420fe26c2873ab0f5d21c
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
package com.sinata.core.util.huawei.obs;
 
import cn.hutool.core.util.StrUtil;
import com.obs.services.ObsClient;
import com.sinata.core.config.HuaWeiConfig;
import org.springframework.web.multipart.MultipartFile;
 
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
 
public class ObsUploadUtil {
 
    public static final String https = "https://";
    public static final String endPoint = "obs.cn-southwest-2.myhuaweicloud.com";
    public static final String bucketName = "meitianmeiya";
    public static final String obsDomain = https + bucketName + "." + endPoint + "/";
 
 
    public static String obsUpload(MultipartFile file, String dir) throws IOException {
        // 文件目录
        dir = StrUtil.isBlank(dir) ? "img/" : dir + "/";
 
        // CommonsMultipartFile file = (CommonsMultipartFile)multipartFile;
        String objectName = "";
        if (file != null && !"".equals(file.getOriginalFilename()) && file.getOriginalFilename() != null) {
            // 创建ObsClient实例
            ObsClient obsClient = new ObsClient(HuaWeiConfig.AK, HuaWeiConfig.SK, https + endPoint);
 
            //获得指定文件的输入流
            InputStream content = file.getInputStream();
            String originalFilename = file.getOriginalFilename();
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            objectName = dir + uuid + originalFilename.subSequence(originalFilename.lastIndexOf("."), originalFilename.length());
 
            // 上传对象至OBS
            //obsClient.putObject(bucketName, uuid, new ByteArrayInputStream("Hello OBS".getBytes()));
            obsClient.putObject(bucketName, objectName, content);
 
            if (objectName != null && !"".equals(objectName)) {
                objectName = obsDomain + objectName;
            }
 
            // 关闭obsClient,全局使用一个ObsClient客户端的情况下,不建议主动关闭ObsClient客户端
            obsClient.close();
        }
        return objectName;
    }
}