首先在pom文件中添加
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.8</version>
</dependency>
注意低配版本不支持130开头的APPID,会报错的
public class QCloudUtil {
private static String bucketName;
private static String secretId;
private static String secretKey;
private static String regionName;
static {
secretId = "SECRETID";//在腾讯云上查看
secretKey = "SECRETKEY";
bucketName = "存储桶的id";
regionName = "服务器所在地区 例如:ap-chengdu";
}
/**
* 上传文件到bucket
*
* @param in 文件流
* @param uploadName 上传文件名
* @return 访问地址
*/
public static String uploadFile(InputStream in, String uploadName,Long contentLength){
// 生成图片的唯一标识名
String uuid = UUID.randomUUID().toString();
int pointIndex = uploadName.lastIndexOf('.');
// 图片名有后缀,没有就有问题了
if (pointIndex == -1) {
throw new CheckException("上传文件类型出错");
}
// 生成最终的图片名
String filename = uuid + uploadName.substring(pointIndex);
// 1 初始化用户身份信息(secretId, secretKey)
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
// 2 设置bucket的区域
ClientConfig clientConfig = new ClientConfig(new Region(regionName));
// 3 生成cos客户端
COSClient cosclient = new COSClient(cred, clientConfig);
// bucket的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
ObjectMetadata metadata = new ObjectMetadata();
Date expiration = new Date(new Date(System.currentTimeMillis()).getTime() + 3600L * 1000 * 24 * 365 * 100);
metadata.setContentLength(contentLength);
metadata.setExpirationTime(expiration);
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,filename,in,metadata);
PutObjectResult putObjectResult = cosclient.putObject(putObjectRequest);
cosclient.shutdown();
//通过以下地址可访问到上传的图片
return "https://" + bucketName + ".cos." + regionName +".myqcloud.com/" + filename;
}
}