SpringBoot整合腾讯云COS对象存储


前言

当我们需要上传图片或者视频时,可以选择使用腾讯云下的COS对象存储空间


一、导入依赖

<dependency>
            <groupId>com.qcloud</groupId>
            <artifactId>cos_api</artifactId>
            <version>5.6.8</version>
        </dependency>

        <dependency>
            <groupId>com.qcloud</groupId>
            <artifactId>qcloud-java-sdk</artifactId>
            <version>2.0.6</version>
        </dependency>
        <dependency>
            <groupId>com.qcloud</groupId>
            <artifactId>qcloud-java-sdk</artifactId>
            <version>2.0.6</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.tencent.cloud</groupId>
            <artifactId>cos-sts-java</artifactId>
            <version>3.0.8</version>
            <scope>test</scope>
        </dependency>

二、编写COS的配置类

1.先在application.properties中填写css的相关信息

#密钥
COS.secretId=

COS.secretKey=

COS.appId=
#存储桶
COS.bucketName=
#区域设置
COS.region=
#域名
COS.url=
#默认文件夹
COS.prefix=

2.配置COSConfig

import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.region.Region;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Data
@Configuration
public class COSConfig {
    
    
    @Value("${COS.secretId}")
    private String secretId;
    @Value("${COS.secretKey}")
    private String secretKey;
    @Value("${COS.appId}")
    private String appId;
    @Value("${COS.bucketName}")
    private String bucketName;
    @Value("${COS.region}")
    private String region;
    @Value("${COS.url}")
    private String url;
    @Value("${COS.prefix}")
    private String prefix;


    @Bean
    public COSClient cosClient() {
    
    
//        初始化用户信息
        COSCredentials cosCredentials = new BasicCOSCredentials(this.secretId,this.secretKey);
//        设置地域
        Region region = new Region(this.region);
        ClientConfig config = new ClientConfig(region);
//        生成COS客户端
        COSClient client = new COSClient(cosCredentials,config);
        return client;

    }
}


三、配置方法类

import com.qcloud.cos.COSClient;
import com.qcloud.cos.model.ObjectMetadata;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.model.PutObjectResult;
import com.three.config.COSConfig;
import com.three.service.FileService;
import com.three.utils.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

@Service
@Slf4j

    @Resource
    private COSConfig cosConfig;
    @Resource
    private COSClient cosClient;
    public Result newUpload( MultipartFile file) {
    
    
        try {
    
    
            InputStream is = new BufferedInputStream(file.getInputStream());
            String pic = UUID.randomUUID().toString().replace("-", "");
            String picName = file.getOriginalFilename();
            assert picName != null;
            String picType = cosConfig.getPrefix() + pic + picName.substring(picName.lastIndexOf("."));
            ObjectMetadata objectMetadata = new ObjectMetadata();
            //设置流的大小
            objectMetadata.setContentLength(file.getSize());
            PutObjectRequest putObjectRequest = new PutObjectRequest(cosConfig.getBucketName(), picType, is, objectMetadata);
            PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
            if (putObjectResult.getETag() != null) {
    
    
            return Result.success(picType);
            }
        } catch (IOException e) {
    
    
            //出现文件异常
            return Result.fail("文件异常");
        }
        return Result.error();
    }
}



Guess you like

Origin blog.csdn.net/weixin_52526235/article/details/119517865