文件直传至oss

首先要先安装oss插件

npm install ali-oss

然后倒入oss插件,可以全局也可局部,我用的是局部

import OSS from 'ali-oss'

uploadOssFile (data) {

  var urlStr = this.upLoadAvatarOss(data)

},

async upLoadAvatarOss (e) {

const _this = this

_this.tableLoading = true

var file = e.file

var reader = new FileReader()

reader.readAsArrayBuffer(file)

return new Promise((resolve, reject) => {

reader.onload = function (event) {

const client = new OSS({

region: 你的oss的region,

accessKeyId: 你的oss的key,

accessKeySecret: 你的oss的secret,

bucket: 你的oss的bucket

})

// 为了满足我的项目中的路径

let d = new Date()

let dArr = d.toLocaleDateString().split('/')

for (let index = 0; index < dArr.length; index++) {

if (index > 0 && dArr[index].length < 2) {

dArr[index] = '0' + dArr[index]

}

}

const obj = new Date().getTime() // 时间戳

const key = 'oss/' + 'project_' + _this.ossData.project_id + '/common/' + dArr.join('') + '/' + d.getTime() + '_' + file.name.split('.').join(obj + '.') // 拼接传至oss的路径+文件名

 var buffer = new OSS.Buffer(event.target.result)

// 通过put接口将本地文件上传到 OSS

 async function put () {

 try {

 let result = await client.put(key, buffer)

 console.log(result)

 let data = {}

 let httpUrl = key

 data.uploadFile = '/' + httpUrl

 data.fileSize = file.size

 data.suffix = file.name.substr(file.name.lastIndexOf('.') + 1, file.name.length)

 data.project_id = _this.ossData.project_id

 data.id = _this.getCurrentId()

 data.name = file.name

 _this.addFileAjax(data)  // 调用添加文件接口,把相应的文件名称、大小、路径等传过去

 resolve(httpUrl)

 } catch (e) {

 reject(e)

 console.log(e)

 }

 }

 put()

}

})

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值