admin管理员组文章数量:1565817
参考腾讯官方文档
pom
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.89</version>
</dependency>
application.yml
tencent:
cos:
accessKey: 你的秘钥id
secretKey: 你的秘钥
region: 你存储桶所在的区域
bucket: 你的存储桶名称
spring:
servlet:
multipart:
enabled: true
file-size-threshold: 5MB
max-file-size: 20MB
代码
- TencentCosProperties
@Data //lombok
@Component
@ConfigurationProperties(prefix = "tencent.cos")
public class TencentCosProperties {
private String accessKey;
private String secretKey;
private String region;
private String bucket;
}
- CosController
@RestController
public class CosController {
@Autowired
private TencentCosProperties tencentCosProperties;
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) {
if (ObjectUtils.isEmpty(file)) {
return "文件不能为空";
}
String filename = file.getOriginalFilename();
String extension = filename.substring(filename.lastIndexOf("."));
String newFileName = UUID.randomUUID().toString().replaceAll("-", "") + extension;
//1.初始化客户端
COSClient cosClient = createCosClient();
//2.上传文件
File localFile = null;
String bucket = tencentCosProperties.getBucket();
try {
localFile = File.createTempFile("temp", null);
file.transferTo(localFile);
//指定文件上传到 COS 上的路径
String key = "img/" + newFileName;
PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, key, localFile);
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
return "上传文件成功";
} catch (IOException e) {
return "上传文件失败";
} finally {
cosClient.shutdown();
}
}
private COSClient createCosClient() {
//1.1 初始化用户身份信息
BasicCOSCredentials credentials = new BasicCOSCredentials(tencentCosProperties.getAccessKey(), tencentCosProperties.getSecretKey());
//1.2 设置bucket的地域
Region region = new Region(tencentCosProperties.getRegion());
ClientConfig clientConfig = new ClientConfig(region);
//1.3 生成cos客户端
COSClient cosClient = new COSClient(credentials, clientConfig);
return cosClient;
}
@PostMapping("/download")
public String download(@RequestParam("fileName") String fileName) {
TransferManager transferManager = createTransferManager();
String bucket = tencentCosProperties.getBucket();
String key = "img/" + fileName;
//下载到工程目录下的imgs文件夹中
File downloadFile = new File(System.getProperty("user.dir") + "/imgs/"+fileName);
GetObjectRequest getObjectRequest = new GetObjectRequest(bucket, key);
try {
//返回一个异步结果 Donload, 可同步的调用 waitForCompletion 等待下载结束, 成功返回 void, 失败抛出异常
Download download = transferManager.download(getObjectRequest, downloadFile);
download.waitForCompletion();
return "下载文件成功";
} catch (InterruptedException e) {
return "下载文件失败";
} finally {
shutdownTransferManager(transferManager);
}
}
@DeleteMapping("/delete")
public String delete(@RequestParam("fileName") String fileName){
COSClient cosClient = createCosClient();
String bucket = tencentCosProperties.getBucket();
String key = "img/" + fileName;
try {
cosClient.deleteObject(bucket,key);
return "删除文件成功";
} catch (CosClientException e) {
return "删除文件失败";
} finally {
cosClient.shutdown();
}
}
private void shutdownTransferManager(TransferManager transferManager) {
// 指定参数为 true, 则同时会关闭 transferManager 内部的 COSClient 实例。
// 指定参数为 false, 则不会关闭 transferManager 内部的 COSClient 实例。
transferManager.shutdownNow(true);
}
private TransferManager createTransferManager() {
//初始化客户端
COSClient cosClient = createCosClient();
//创建线程池
ExecutorService threadPool = Executors.newFixedThreadPool(32);
//创建 TransferManager
return new TransferManager(cosClient, threadPool);
}
}
本文标签: 腾讯上传文件SpringBootcos
版权声明:本文标题:springboot整合腾讯云cos进行上传、下载、删除文件 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1726540812a1074699.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论