Skip to content

上传文件到阿里云 的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}`

备案号:豫ICP备17017964号