文件直傳至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()

}

})

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章