前言
当我们需要上传图片或者视频时,可以选择使用腾讯云下的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();
}
}