一、首先从后断获取上传 token
def upload_img(key):
# 需要填写你的 Access Key 和 Secret Key
# 构建鉴权对象
# token = cache.get("upload_img_token")
# if not cache.get("upload_img_token"):
q = Auth(access_key, secret_key)
# 要上传的空间
bucket_name = 'xiaochengxuopen'
# 上传后保存的文件名
key = key
# 生成上传 Token,可以指定过期时间等
print(key)
token = q.upload_token(bucket_name, key, 3600)
# cache.set("upload_img_token", token, 3600 * 0.9)
return token
二、前端代码
code...let imgbase64 = file.slice(file.indexOf(',')+1);
// let imgbase64 = file.replace("data:image/png;base64,","");
let url = "http://up-z2.qiniu.com/putb64/-1/key/"+this.QiniuData.key;
let xhr = new XMLHttpRequest();
let _this=this;
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
let baseurl = "域名";
_this.posterImgURL=baseurl+JSON.parse(xhr.responseText).key
}
}
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.setRequestHeader("Authorization","UpToken "+this.QiniuData.token);
xhr.send(imgbase64);
三、
特别注意: 因为七牛上传base64的图片是需要对文件名进行base64编码的。如果不转码 那么从后端拿到的token 将不生效
解决办法
前段可以对后端返回的文件名 编码 或者后端返回编码后的文件名