以下是我的代码,我想获取临时凭证实现往腾讯cos桶上传文件,但为什么前端页面返回桶名称格式错误,我该如何修改?
PYTHON代码
def credential(bucket, region):
""" 获取cos上传临时凭证 """
from sts.sts import Sts
config = {
# 临时密钥有效时长,单位是秒(30分钟=1800秒)
'duration_seconds': 5,
# 固定密钥 id
'secret_id': settings.TENCENT_COS_ID,
# 固定密钥 key
'secret_key': settings.TENCENT_COS_KEY,
# 换成你的 bucket
'bucket': bucket,
# 换成 bucket 所在地区
'region': region,
# 这里改成允许的路径前缀,可以根据自己网站的用户登录态判断允许上传的具体路径
# 例子: a.jpg 或者 a/* 或者 * (使用通配符*存在重大安全风险, 请谨慎评估使用)
'allow_prefix': '*',
# 密钥的权限列表。简单上传和分片需要以下的权限,其他权限列表请看 https://cloud.tencent.com/document/product/436/31923
'allow_actions': [
# "name/cos:PutObject",
# 'name/cos:PostObject',
# 'name/cos:DeleteObject',
# "name/cos:UploadPart",
# "name/cos:UploadPartCopy",
# "name/cos:CompleteMultipartUpload",
# "name/cos:AbortMultipartUpload",
"*",
],
}
sts = Sts(config)
result_dict = sts.get_credential()
return result_dict
@csrf_exempt
def cos_credential(request, project_id):
""" 获取cos上传临时凭证 """
data_dict = credential(request.tracer.project.bucket, request.tracer.project.region)
return JsonResponse(data_dict)
前端代码
<script src="{% static 'js/cos-js-sdk-v5.min.js' %}"></script>
<script>
var FOLDER_URL = '{% url 'file' project_id=request.tracer.project.id %}'
var FILE_DELETE_URL = '{% url 'file_delete' project_id=request.tracer.project.id %}'
var COS_CREDENTIAL = "{% url 'cos_credential' project_id=request.tracer.project.id %}";
var COS_OBJECT = new COS({
getAuthorization:function(options,callback){
//向django后台发送请求,获取临时凭证
$.get('/cos/credential',{
//可从options取需要的参数
},function(data){
var credentials=data && data.credentials;
if (!data || !credentials) return console.error('credentials invalid');
callback({
TmpSecretId:credentials.tmpSecretId,
TmpSecretKey:credentials.tmpSecretKey,
XCosSecurityToken:data.startTime,
ExpiredTime:data.expiredTime,
});
});
}
});
$(function(){
bindUploadFile();
});
function bindUploadFile() {
$('#uploadFile').change(function () {
var fileList=$(this)[0].files;
$.each(fileList,function(index,fileObject){
var fileName=fileObject.name;
COS_OBJECT.putObject({
Bucket:'{{request.tracer.project.bucket}}',
Region:'{{request.tracer.project.region}}',
Key:fileName,
Body:fileObject,
onProgress:function(progressData){
console.log('文件上传进度--->',fileName,JSON.stringify(progressData));
}
},function(err,data){
console.log(err||data);
});
})
});
}
返回错误
Error: Bucket should format as "test-1250000000".