/* * @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, }); }