想在小程序上传文件到腾讯云,参考的代码:https://github.com/tencentyun/cos-wx-sdk-v5/blob/master/demo/demo-sdk.js
,获取签名用的格式一、(推荐)后端通过获取临时密钥给到前端,前端计算签名,由于没有后台配合,就写了个小程序获取签名的云函数,代码如下:
调试的时候一直报错,信息如下:
{"Code":"InvalidParameter.GrantOtherResource","Message":"[QC_STS] cant grant other resource"}
// 云函数入口文件
const cloud = require('wx-server-sdk')
// 临时密钥服务例子
var STS = require('qcloud-cos-sts');
const tencentcloudConfig = require("./config");
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return new Promise((resolve, reject) => {
// 在 3 秒后返回结果给调用方(小程序 / 其他云函数)
getTemSecret(resolve, reject)
})
}
// 配置参数
var config = {
secretId: tencentcloudConfig.tecentSecretId,
secretKey: tencentcloudConfig.tecentSecretKey,
proxy: '',
durationSeconds: 1800,
bucket: tencentcloudConfig.tecentCosBucket,
region: tencentcloudConfig.tecentRegion,
allowPrefix: 'test/*',
// 简单上传和分片,需要以下的权限,其他权限列表请看 https://cloud.tencent.com/document/product/436/14048
allowActions: [
'name/cos:PostObject',
],
};
// 格式一:临时密钥接口
function getTemSecret(resolve, reject) {
// 获取临时密钥
var LongBucketName = config.bucket;
var ShortBucketName = LongBucketName.substr(0, LongBucketName.indexOf('-'));
var AppId = LongBucketName.substr(LongBucketName.indexOf('-') + 1);
var policy = {
'version': '2.0',
'statement': [{
'action': config.allowActions,
'effect': 'allow',
'principal': { 'qcs': ['*'] },
'resource': [
// 'qcs::cos:ap-guangzhou:uid/' + AppId + ':prefix//' + AppId + '/' + ShortBucketName + '/' + config.allowPrefix,
'qcs::cos:' + config.region+':uid/' + AppId + ':prefix//' + AppId + '/' + ShortBucketName + '/' + config.allowPrefix,
],
}],
};
var startTime = Math.round(Date.now() / 1000);
STS.getCredential({
secretId: config.secretId,
secretKey: config.secretKey,
proxy: config.proxy,
durationSeconds: config.durationSeconds,
policy: policy,
region: config.region
}, function (err, tempKeys) {
var result = JSON.stringify(err || tempKeys) || '';
result.startTime = startTime;
resolve(result);
});
}
//------------------小程序云函数的package.json--------------------
{
"name": "tecentCos",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"wx-server-sdk": "latest",
"body-parser": "^1.18.3",
"cross-env": "^5.2.0",
"express": "^4.16.4",
"qcloud-cos-sts": "^3.0.2"
}
}
相似问题