记录一下上传图片到腾讯云cos的方法

646 阅读1分钟

先使用element-ui的upload组件

<el-upload
    class="upload-demo"
    drag
    :http-request="updateAvatar"
    :show-file-list="false"
    :before-upload="beforeAvatarUpload"
    action=""
    multiple
  >
    <i class="el-icon-upload" />
    <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
    <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>

注意,这里上传的时候要用http-request自定义上传,覆盖action属性,而action属性为必填属性,不能删除,所以为空
下面写上传的函数 对象存储 快速入门-SDK 文档-文档中心-腾讯云 (tencent.com)

// 需要先 npm i cos-js-sdk-v5 --save 下载sdk并引入,创建cos实例
import COS from 'cos-js-sdk-v5'

updateAvatar(params) {
      console.log(params.file)
      const cos = new COS({
        SecretId: '存储桶id',
        SecretKey: '存储桶的key'
      }) // 完成cos对象的初始化
      cos.putObject({
        Bucket: 'ypicture-1318050983', // 存储桶名称
        Region: 'ap-nanjing', // 地域名称
        Key: params.file.name, // 文件名称
        StorageClass: 'STANDARD', // 固定值
        Body: params.file // 文件对象
      }, (err, data) => {
        if (data.statusCode === 200 && data.Location) {
          // 拿到了腾讯云返回的地址
          // 通过input自定义事件将地址传出去
          this.$emit('input', 'http://' + data.Location) // 将地址返回了
        } else {
          this.$message.error(err.Message) // 上传失败提示消息
        }
      })
    },

这样就可以拿到图片的地址了