import { getststoken, getuploadconfig } from '@/api/index.js'
import md5 from 'js-md5'
import { Message } from 'element-ui'
const OSS = require('ali-oss')
export function oss(params) {
return new OSS(params)
}
export function ossClient({ config }) {
return new Promise((resolve, reject) => {
Promise.all([getststoken(), getuploadconfig()])
.then(res => {
let tokenData = res[0].data
let configData = res[1].data
if (res[0].status != 200 || tokenData.ret_code != 200) {
Message.error('服务异常,稍后请重试')
reject()
}
if (res[0].status != 200 || configData.ret_code != 200) {
Message.error('服务异常,稍后请重试')
reject()
}
const { Credentials } = tokenData.result
const singleConfig = configData.result[config]
let params = {
region: 'oss-cn-beijing',
stsToken: Credentials.SecurityToken,
accessKeyId: Credentials.AccessKeyId,
accessKeySecret: Credentials.AccessKeySecret,
bucket: singleConfig.bucket
}
const client = oss(params)
resolve({ client, configData: singleConfig })
})
.catch(() => {
Message.error('服务异常,稍后请重试')
reject()
})
})
}
export function setMd5Path(path, value) {
let array = value.split('.')
let type = array[array.length - 1]
let fileName = ''
array.forEach((value, index) => {
if (index !== array.length - 1) {
fileName += value
}
})
return `${path}${md5(fileName)}${+new Date()}.${type}`
}
import { ossClient, setMd5Path } from '@/utils/oss'
uploadFileInOss({ file }) {
let params = { config: 'diagnosis_treat' }
ossClient(params).then(({ client, configData }) => {
let filePath = setMd5Path(configData.pre, file.name)
client
.put(filePath, file)
.then((ossRes) => {
this.setFileList(ossRes, file)
})
.catch(() => {
return this.$message.error('上传异常,稍后请重试')
})
})
}
downloadFileInOss(url) {
let params = { config: 'diagnosis_treat' }
ossClient(params).then(({ client }) => {
let filePath = client.signatureUrl(url);
})
}