上传文件到阿里云 的oss
vue上传文件到阿里云oss
controller
js
import oss from 'ali-oss'
import { v4 as uuidv4 } from 'uuid'
const ossInfo = {} //通过接口获取的oss信息
const client = new oss({
accessKeyId: ossInfo.key,
accessKeySecret: ossInfo.secret,
stsToken: ossInfo.token,
region: ossInfo.region_id,
bucket: ossInfo.bucketName,
timeout: 1000 * 60 * 60 * 5,
refreshSTSToken: async () => {
return {
accessKeyId: ossInfo.key, // 自己账户的accessKeyId或临时秘钥
accessKeySecret: ossInfo.secret, // 自己账户的accessKeySecret或临时秘钥
stsToken: ossInfo.region_id // 从STS服务获取的安全令牌(SecurityToken)。
}
},
refreshSTSTokenInterval: 1000 * 60 * 10 // 刷新临时访问凭证的时间间隔,单位为毫秒。
})
const filename = uuidv4()
await client.multipartUpload(filename, file.file, {
'Content-Type': 'multipart/form-data',
// 分片上传。
progress: (p, cpt, res) => {
// 获取分片上传进度、断点和返回值。
file.onProgress({ percent: p * 100 })
},
parallel: 4, // 设置并发上传的分片数量。
partSize: 1024 * 1024, // 设置分片大小。默认值为1 MB,最小值为100 KB。
mime: file.file.type
})
const url = `https://${ossInfo.bucketName}.${ossInfo.region_id}.aliyuncs.com/${filename}`