【相关推荐】
- 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/724305
- 这篇博客你也可以参考下:虹软离线人脸识别java版本的SDK使用配置,也是整了半天才看明白一些,总结一下
- 除此之外, 这篇博客: 使用腾讯云对象云存储进行上传文件(Java临时秘钥)及小程序SDK使用中的 官方方法一(推荐):后端通过获取临时密钥给到前端,前端计算签名 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
QCloundController.java
// 临时秘钥配置
TreeMap<String, Object> config = new TreeMap<String, Object>();
Response credential = null; // 凭证结果
try {
config.put("SecretId", cosProperties.getSecretId());
config.put("SecretKey", cosProperties.getSecretKey());
config.put("durationSeconds", 1800); // 设置可使用事件1800秒 -> 30分钟
config.put("bucket", cosProperties.getBucketName()); // 存储桶名
config.put("region", cosProperties.getRegion()); // 地区
// policy的resource => 前缀
// 只允许访问: [avatar/*]
config.put("allowPrefixes", new String[] {
cosProperties.getAvatarPrefix()
});
// 密钥的权限列表。必须在这里指定本次临时密钥所需要的权限。
// 简单上传、表单上传和分片上传需要以下的权限,其他权限列表请看 https://cloud.tencent.com/document/product/436/31923
config.put("allowActions", new String[] {
"name/cos:PutObject",// 简单上传
"name/cos:PostObject",// 表单上传、小程序上传
"name/cos:GetBucket", // 允许获取桶的对象列表
// 分片上传
"name/cos:InitiateMultipartUpload",
"name/cos:ListMultipartUploads",
"name/cos:ListParts",
"name/cos:UploadPart",
"name/cos:CompleteMultipartUpload"
});
//成功返回临时密钥信息,如下打印密钥信息
credential = CosStsClient.getCredential(config);
} catch (Exception e) {
//失败抛出异常
e.printStackTrace();
throw new IllegalArgumentException("no valid secret !");
}
return Result.success(credential);
allowPrefixes对应 policy的resource(原本是allowPrefix, 从源码中可以得出)
allowActions对应policy的action
policy更多了解:
https://cloud.tencent.com/document/product/436/31923
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pg36OU2L-1632370381510)(/使用腾讯云对象云存储进行上传文件(Java临时秘钥)]12.png)](https://img-blog.csdnimg.cn/5caea43160cf4fd9b3b3f53a7174919c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF57qn5peg5pWM5YWo5qCI5bCP6I-c6bih,size_20,color_FFFFFF,t_70,g_se,x_16)
2. 写完java后台就该写前端小程序了
cos.ts
// cos.ts
const COS = require('cos-wx-sdk-v5');
var cos = new COS({
getAuthorization: function (options: any, callback: any) {
console.log(options);
wx.request({
url: 'http://127.0.0.1:8080/qc/key',
data: {
},
dataType: 'json',
success: function (result: any) {
var data = result.data.data;
console.log(data);
var credentials = data && data.credentials;
if (!data || !credentials) return console.error('credentials invalid');
callback({
TmpSecretId: credentials.tmpSecretId,
TmpSecretKey: credentials.tmpSecretKey,
XCosSecurityToken: credentials.sessionToken,
// 建议返回服务器时间作为签名的开始时间,避免用户浏览器本地时间偏差过大导致签名错误
StartTime: data.startTime, // 时间戳,单位秒,如:1580000000
ExpiredTime: data.expiredTime, // 时间戳,单位秒,如:1580000900
});
}
});
}
});
export {
cos
}
app.ts:app文件
import { cos } from './COS/cos';
App<IAppOption>({
globalData: {
},
onLaunch() {
cos.getBucket({
Bucket: 'myblogspringboot-1300326898',
Region: 'ap-nanjing',
Prefix: 'avatar/', // 这里传入列出的myblogspringboot-1300326898/avatar下的所有文件
}, function (err: any, data: any) {
if (err) {
console.log(err);
return;
}
console.log(data, 2);
});
},
})
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M9UMjP1U-1632370381511)(/使用腾讯云对象云存储进行上传文件(Java临时秘钥)]13.png)](https://img-blog.csdnimg.cn/4bd5848908e34892acc80c7ba88ca067.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF57qn5peg5pWM5YWo5qCI5bCP6I-c6bih,size_16,color_FFFFFF,t_70,g_se,x_16)
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^