85 lines
2.2 KiB
JavaScript
85 lines
2.2 KiB
JavaScript
|
|
const OSS = require('ali-oss')
|
|||
|
|
import {
|
|||
|
|
stsToken
|
|||
|
|
} from '@/api/oss.js'
|
|||
|
|
|
|||
|
|
let ossConfig = null;
|
|||
|
|
// 取消上传控制项
|
|||
|
|
let isCancel = false;
|
|||
|
|
|
|||
|
|
// 设置客户端请求访问凭证的地址
|
|||
|
|
const OssFunc = async() => {
|
|||
|
|
|
|||
|
|
let res = await stsToken();
|
|||
|
|
ossConfig = res.data;
|
|||
|
|
|
|||
|
|
const client = new OSS({
|
|||
|
|
// yourRegion填写Bucket所在地域。以华东1(杭州)为例,yourRegion填写为oss-cn-hangzhou。
|
|||
|
|
region: 'oss-cn-hangzhou',
|
|||
|
|
accessKeyId: ossConfig.accessKeyId,
|
|||
|
|
accessKeySecret: ossConfig.accessKeySecret,
|
|||
|
|
stsToken: ossConfig.securityToken,
|
|||
|
|
bucket: ossConfig.bucketName,
|
|||
|
|
timeout: 600000,
|
|||
|
|
// HTTPS (secure: true) or HTTP (secure: false) protocol
|
|||
|
|
secure: false,
|
|||
|
|
refreshSTSTokenInterval: 3000000,
|
|||
|
|
refreshSTSToken: stsToken().then(res => {
|
|||
|
|
if (res.status === 0) {
|
|||
|
|
console.log('成功刷新oss token');
|
|||
|
|
ossConfig.accessKeyId = res.data.accessKeyId;
|
|||
|
|
ossConfig.accessKeySecret = res.data.accessKeySecret;
|
|||
|
|
ossConfig.securityToken = res.data.securityToken;
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
return client;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 分片上传方法(没有设置分片相关设置,采用默认)
|
|||
|
|
async function put(fileName, file) {
|
|||
|
|
try {
|
|||
|
|
let oss = await OssFunc();
|
|||
|
|
const result = await oss.multipartUpload(fileName, file, {
|
|||
|
|
'headers': {
|
|||
|
|
'Access-Control-Allow-Origin': '*',
|
|||
|
|
},
|
|||
|
|
'progress': (progress) => {
|
|||
|
|
// console.log('progress:', progress)
|
|||
|
|
if (isCancel) {
|
|||
|
|
oss.cancel();
|
|||
|
|
// 复位
|
|||
|
|
isCancel = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
return result;
|
|||
|
|
} catch (e) {
|
|||
|
|
console.log(e);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 设置取消上传标志位为true
|
|||
|
|
async function cancelUpload() {
|
|||
|
|
isCancel = true;
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 获取oss文件临时路径
|
|||
|
|
async function getUrl(name) {
|
|||
|
|
try {
|
|||
|
|
let oss = await OssFunc();
|
|||
|
|
const result = await oss.signatureUrl(name);
|
|||
|
|
return result;
|
|||
|
|
} catch (e) {
|
|||
|
|
console.log(e);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export {
|
|||
|
|
put,
|
|||
|
|
getUrl,
|
|||
|
|
cancelUpload,
|
|||
|
|
}
|