You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.6 KiB
62 lines
1.6 KiB
/*
|
|
* @Author: ch
|
|
* @Date: 2022-07-07 17:27:04
|
|
* @LastEditors: ch
|
|
* @LastEditTime: 2022-07-11 17:24:09
|
|
* @Description: file content
|
|
*/
|
|
import { ElMessage } from '@/plugins/element-plus';
|
|
import request from '@/utils/request';
|
|
// OSS签名
|
|
export function sign(serviceName, configId) {
|
|
return request({
|
|
url: '/oss/oss/generateOssSignature',
|
|
method: 'POST',
|
|
data: {
|
|
serviceName,
|
|
configId,
|
|
},
|
|
});
|
|
}
|
|
export function payCenterSign() {
|
|
return request({
|
|
url: '/payCenter/oss/ossSignature',
|
|
method: 'GET',
|
|
});
|
|
}
|
|
|
|
// 上传文件
|
|
export async function upload(serviceName, configId, file, cancelToken, suffix) {
|
|
const _suffix = file.name.substring(file.name.lastIndexOf('.'));
|
|
const suffixObj = typeof suffix === 'string' ? suffix.split(',') : suffix;
|
|
if (!suffixObj.includes(_suffix)) {
|
|
ElMessage.error('上传文件类型错误');
|
|
return '';
|
|
}
|
|
let oss = {};
|
|
if (serviceName) {
|
|
oss = await sign(serviceName, configId);
|
|
} else {
|
|
oss = await payCenterSign();
|
|
}
|
|
const data = new FormData();
|
|
const name = file.uid + _suffix;
|
|
data.append('name', name);
|
|
data.append('key', `${oss.dir}${name}`);
|
|
data.append('policy', oss.policy);
|
|
data.append('OSSAccessKeyId', oss.accessId);
|
|
data.append('Signature', oss.signature);
|
|
data.append('success_action_status', 200);
|
|
data.append('file', file);
|
|
return request({
|
|
url: oss.host,
|
|
method: 'POST',
|
|
data,
|
|
headers: {
|
|
oss: true,
|
|
},
|
|
timeout: 0,
|
|
cancelToken,
|
|
});
|
|
}
|