ElementUI的upload上传文件到OSS,使用授权URL,无需额外配置RAM账户
ElementUI的upload上传文件到OSS,使用授权URL,无需额外配置RAM账户
最近在做一个上传到oss的部分,oss文档中使用sts授权的方式阅读量太大,不想看。 授权URL的方式看上去更加简单,于是开始研究。但是这一部分网上相关案例是真的少,经过好久的调试,现在将代码贴出来
1.服务器端
let ossConfig={
"region": "oss-cn-xxxx",
"accessKeyId": "LTxxxxxxxxxxxxxxxxxxxx",
"accessKeySecret": "fcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"bucket": "xxx"
}
const client = new OSS(ossConfig);
let filename='xxxxx.zip';
const url = client.signatureUrl(filename, {
expires: 3600,
method: 'PUT',
'Content-Type': 'application/octet-stream',
});
console.log(url)
2.前端
el-upload组件中
el-upload#(
action='',
:http-request='upload',
:auto-upload='true')
自定义的upload方法
upload: function (param) {
let that = this
that
.$axios({
method: 'put',
url: that.uploadUrl,
data: param.file,
withCredentials: false,
headers: {
'Content-Type': 'application/octet-stream',
}
})
.then(function (response) {
})
.catch(function (error) {
})
},
总结
最重要的就是申请URL和实际上传时候的header必须一模一样,而使用formData会自动附上boundary导致签名校验失败
|