const OSS = require('ali-oss') const router = require('@/router'); const stream = require('stream') import Vue from 'vue' const { GenerateSTS, GetObjectStoreToken } = require('../api/user.js') import { getToken } from '@/utils/auth' Vue.prototype.OSSclientConfig = { } function blobToBuffer(blob, fileName) { return new Promise((resolve, reject) => { const file = new File([blob], fileName); resolve(file) }) } async function ossGenerateSTS() { let res = await GetObjectStoreToken() Vue.prototype.OSSclientConfig = { ...res.Result[res.Result.ObjectStoreUse] } Vue.prototype.OSSclientConfig.basePath = Vue.prototype.OSSclientConfig.viewEndpoint switch (res.Result.ObjectStoreUse) { case 'AliyunOSS': Vue.prototype.OSSclientConfig.bucket = Vue.prototype.OSSclientConfig.bucketName Vue.prototype.OSSclientConfig.timeout = 10 * 60 * 1000 let OSSclient = new OSS(Vue.prototype.OSSclientConfig) Vue.prototype.OSSclient = { put: function (objectName, object) { return new Promise(async (resolve, reject) => { try { let _vm = router.default.app if (_vm._route.path !== '/trials/trials-panel/visit/crc-upload') { var objectItem = objectName.split('/') objectItem[objectItem.length - 1] = new Date().getTime() + '_' + objectItem[objectItem.length - 1] objectName = objectItem.join('/') } let res = await OSSclient.put(objectName, object) if (res && res.url) { resolve({ name: objectName, url: Vue.prototype.OSSclientConfig.viewEndpoint + objectName }) } else { reject() } } catch (e) { console.log(e) reject() } }) } } break } return } export const OSSclient = ossGenerateSTS