首先要先安裝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()
}
})
}