/**
* @author 刘宇浩
*/
@Slf4j
@Component
@RestController
@RequestMapping("/cos")
public class TencentCosUtils {
//API密钥secretId
private String secretId="";
//API密钥secretKey
private String secretKey="";
//存储桶所属地域
private String region="";
//存储桶空间名称
private String bucketName="";
//存储桶访问域名
private String url = "";
//上传文件前缀路径(eg:/images/) 设置自己的主目录
private String prefix = "";
public COSClient newCosClient() {
// 1 初始化用户身份信息(secretId, secretKey)。
// SECRETID和SECRETKEY请登录访问管理控制台 https://console.cloud.tencent.com/cam/capi 进行查看和管理
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// 2 设置 bucket 的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
// clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参见源码或者常见问题 Java SDK 部分。
Region region = new Region("ap-shanghai");
ClientConfig clientConfig = new ClientConfig(region);
// 这里建议设置使用 https 协议
// 从 5.6.54 版本开始,默认使用了 https
clientConfig.setHttpProtocol(HttpProtocol.https);
// 3 生成 cos 客户端。
return new COSClient(cred, clientConfig);
}
/**
* 上传File类型的文件
*/
@PostMapping("/upload")
public String upload(@RequestParam String fileUrl) {
// 指定要上传的文件
File file = new File(fileUrl);
String name = file.getName();
System.out.println(name);
// 指定文件将要存放的存储桶
// 指定文件上传到 COS 上的路径,即对象键。例如对象键为folder/picture.jpg,则表示将文件 picture.jpg 上传到 folder 路径下
String key = prefix + name;
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, file);
PutObjectResult putObjectResult = newCosClient().putObject(putObjectRequest);
//返回文件的名字存到数据库中
return name;
}
/**
* 下载对象
* @param fileName eg:picture.jpg
* @return
*/
@PostMapping("/download")
public void download(@RequestParam String fileName,@RequestParam String outputFilePath){
String key = prefix + fileName;
// 方法2 下载文件到本地的路径,例如 D 盘的某个目录
File downFile = new File(outputFilePath + "\\" + fileName);
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
ObjectMetadata downObjectMeta = newCosClient().getObject(getObjectRequest, downFile);
}
}
使用腾讯Cos实现对象存储
最新推荐文章于 2024-06-17 11:28:32 发布