105 lines
2.4 KiB
JavaScript
105 lines
2.4 KiB
JavaScript
/**
|
||
* 阿里云oss上传工具
|
||
*/
|
||
import { get_oss_sign_aliyun } from '@/api/user'
|
||
const OSS = require('ali-oss')
|
||
const config = {
|
||
region: 'oss-cn-shenzhen',
|
||
accessKeyId: 'LTAIyZIrTMnMYzZ8',
|
||
accessKeySecret: 'bte644kZ70psfTenXE0IbSSQk040u1',
|
||
// accessKeySecret: '1',
|
||
policy: '',
|
||
bucket: 'aiguovip2020'
|
||
}
|
||
|
||
/**
|
||
* 配置
|
||
*/
|
||
const init = async(v) => {
|
||
const res = await get_oss_sign_aliyun({ type: v })
|
||
config.region = res.datas.region
|
||
config.accessKeyId = res.datas.accessid
|
||
config.signature = res.datas.signature
|
||
config.policy = res.datas.policy
|
||
config.bucket = res.datas.bucket
|
||
console.log(config)
|
||
return new OSS(config)
|
||
}
|
||
|
||
/**
|
||
* 生成uuid
|
||
*/
|
||
const guid = () => {
|
||
const S4 = () => {
|
||
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
|
||
}
|
||
return (S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4())
|
||
}
|
||
|
||
/**
|
||
* 修改文件名字
|
||
*/
|
||
const fileName = (file) => {
|
||
const arr = file.name.split('.')
|
||
var uuid = 'oss' + guid()
|
||
if (arr.length > 1) {
|
||
return uuid + '.' + arr[arr.length - 1]
|
||
} else {
|
||
return uuid
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 上传文件
|
||
*/
|
||
const ossPut = (file, dir) => {
|
||
return new Promise((resolve, reject) => {
|
||
const objectName = fileName(file)
|
||
init().put(dir + objectName, file).then(({ res, url }) => {
|
||
if (res && res.status == 200) {
|
||
resolve(res, url)
|
||
}
|
||
}).catch((err) => {
|
||
reject(err)
|
||
})
|
||
})
|
||
}
|
||
// 直接调取oss函数,返回URL结果
|
||
function uploadOSS(file) {
|
||
return new Promise(async(resolve, reject) => {
|
||
const fileName = fileName(file)
|
||
// let client = new OSS({
|
||
// region: OSSConfig.ossParams.region,
|
||
// accessKeyId: OSSConfig.ossParams.accessKeyId,
|
||
// accessKeySecret: OSSConfig.ossParams.accessKeySecret,
|
||
// bucket: OSSConfig.ossParams.bucket,
|
||
// secure: true
|
||
// })
|
||
const res = await init().multipartUpload(dir + fileName, file)
|
||
if (res.name) {
|
||
resolve({
|
||
fileName: file.name,
|
||
url: `${OSSConfig.uploadHost}/${fileName}`
|
||
})
|
||
} else {
|
||
reject('OSS上传失败')
|
||
}
|
||
})
|
||
}
|
||
/**
|
||
* 下载文件
|
||
*/
|
||
const ossGet = (name) => {
|
||
return new Promise((resolve, reject) => {
|
||
init().get(name).then(({ res }) => {
|
||
if (res && res.status == 200) {
|
||
resolve(res)
|
||
}
|
||
}).catch((err) => {
|
||
reject(err)
|
||
})
|
||
})
|
||
}
|
||
|
||
export default { ossPut, ossGet, uploadOSS, init }
|