|
@@ -1,5 +1,5 @@
|
|
|
const OSS = require('ali-oss');
|
|
const OSS = require('ali-oss');
|
|
|
-import { restartProcess } from '@/api/index';
|
|
|
|
|
|
|
+import { getSTSToken } from '@/api/H5Camera';
|
|
|
|
|
|
|
|
// 自定义请求头
|
|
// 自定义请求头
|
|
|
const headers = {
|
|
const headers = {
|
|
@@ -14,7 +14,6 @@ const headers = {
|
|
|
// 指定PutObject操作时是否覆盖同名目标Object。此处设置为true,表示禁止覆盖同名Object。
|
|
// 指定PutObject操作时是否覆盖同名目标Object。此处设置为true,表示禁止覆盖同名Object。
|
|
|
'x-oss-forbid-overwrite': 'true',
|
|
'x-oss-forbid-overwrite': 'true',
|
|
|
};
|
|
};
|
|
|
-
|
|
|
|
|
export function dataURLtoFile(dataurl, filename) {
|
|
export function dataURLtoFile(dataurl, filename) {
|
|
|
let arr = dataurl.split(','),
|
|
let arr = dataurl.split(','),
|
|
|
mime = arr[0].match(/:(.*?);/)[1],
|
|
mime = arr[0].match(/:(.*?);/)[1],
|
|
@@ -38,27 +37,31 @@ let credentials = null;
|
|
|
async function uploadAliOss(base64, filename) {
|
|
async function uploadAliOss(base64, filename) {
|
|
|
if (isCredentialsExpired(credentials)) {
|
|
if (isCredentialsExpired(credentials)) {
|
|
|
// 获取 STS token.
|
|
// 获取 STS token.
|
|
|
- const response = await restartProcess();
|
|
|
|
|
- if (!response.ok) {
|
|
|
|
|
|
|
+ const response = await getSTSToken();
|
|
|
|
|
+ if (response.code != 200 || !response.data) {
|
|
|
// 处理错误的HTTP状态码。
|
|
// 处理错误的HTTP状态码。
|
|
|
- throw new Error(`获取STS令牌失败: ${response.status} ${response.statusText}`);
|
|
|
|
|
|
|
+ let err = `获取STS令牌失败: ${response.msg}`;
|
|
|
|
|
+ throw new Error(err);
|
|
|
}
|
|
}
|
|
|
- credentials = await response.json();
|
|
|
|
|
|
|
+ credentials = await response.data;
|
|
|
}
|
|
}
|
|
|
const client = new OSS({
|
|
const client = new OSS({
|
|
|
- region: 'cdn-svs-test.nipponpaint.com.cn',
|
|
|
|
|
|
|
+ region: 'cn-shanghai',
|
|
|
// yourBucketName填写Bucket名称。
|
|
// yourBucketName填写Bucket名称。
|
|
|
bucket: 'svs-test',
|
|
bucket: 'svs-test',
|
|
|
- accessKeyId: credentials.AccessKeyId,
|
|
|
|
|
- accessKeySecret: credentials.AccessKeySecret,
|
|
|
|
|
- stsToken: credentials.SecurityToken,
|
|
|
|
|
|
|
+ accessKeyId: credentials.accessKeyId,
|
|
|
|
|
+ accessKeySecret: credentials.accessKeySecret,
|
|
|
|
|
+ stsToken: credentials.securityToken,
|
|
|
|
|
+ secure: true,
|
|
|
});
|
|
});
|
|
|
let file = dataURLtoFile(base64, filename);
|
|
let file = dataURLtoFile(base64, filename);
|
|
|
try {
|
|
try {
|
|
|
const result = await client.put(filename, file, { headers });
|
|
const result = await client.put(filename, file, { headers });
|
|
|
console.log(result);
|
|
console.log(result);
|
|
|
|
|
+ return result;
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
console.log(e);
|
|
console.log(e);
|
|
|
|
|
+ throw new Error(e);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
/**
|
|
/**
|
|
@@ -68,7 +71,7 @@ function isCredentialsExpired(credentials) {
|
|
|
if (!credentials) {
|
|
if (!credentials) {
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
- const expireDate = new Date(credentials.Expiration);
|
|
|
|
|
|
|
+ const expireDate = new Date(credentials.expiration);
|
|
|
const now = new Date();
|
|
const now = new Date();
|
|
|
// 如果有效期不足一分钟,视为过期。
|
|
// 如果有效期不足一分钟,视为过期。
|
|
|
return expireDate.getTime() - now.getTime() <= 60000;
|
|
return expireDate.getTime() - now.getTime() <= 60000;
|