61 lines
1.9 KiB
JavaScript
61 lines
1.9 KiB
JavaScript
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
|