Vue图片上传腾讯存储桶

需要安装插件 

npm i cos-js-sdk-v5 --save

不需要后端服务器,前端直接上传

 element 图片上传组件

<el-upload
        :on-preview="preview"
        :on-remove="handleRemove"
        :on-change="changeFile"
        :before-upload="beforeUpload"
        :file-list="fileList"
        list-type="picture-card"
        action="#"
        :limit="1"
        :class="{ disabled: fileComputed }"
        :http-request="upload"
      >
        <i class="el-icon-plus" />
      </el-upload>

 import COS from "cos-js-sdk-v5"; 引入一下  cos腾讯

  var cos = new COS({

     //腾讯云的id和密码

    SecretId: "*******", // 身份识别 ID

    SecretKey: " ******", // 身份密钥

  });

 data() {
      return {
        fileList: [], // 图片地址设置为数组
        showDialog: false, // 控制显示弹层
        imgUrl: "",
        currentFileUid: null, //确定上传图片的id
        showPercent: false, //状态加载条
        percent: 0,//进度条加载过程
      };
    },

然后调用方法

 upload(params) {
        //   console.log(params.file)
        if (params.file) {
          // 执行上传操作
          cos.putObject(
            {
              Bucket: "image-1316300210", // 存储桶
              Region: "ap-beijing", // 地域
              Key: params.file.name, // 文件名
              Body: params.file, // 要上传的文件对象
              StorageClass: "STANDARD", // 上传的模式类型 直接默认 标准模式即可
              // 上传到腾讯云 =》 哪个存储桶 哪个地域的存储桶 文件  格式  名称 回调
             },
            (err, data) => {
              // 这个回调需要使用箭头函数,因为currentFileUid在当前组件实例对象上,
              //箭头函数没有this,会继承upload方法的this,它的this执行vue组件实例
  
              // data中有一个statusCode === 200 的时候说明上传成功
              if (!err && data.statusCode === 200) {
                console.log(err);
                //data就是成功的 里面 url
                console.log(data);
                //   此时说明文件上传成功  云服务器会返回一个地址,我们需要把该地址放到组件的img标签上
                //  此时我们要将fileList中的数据的url地址变成 现在上传成功的地址
                // 目前虽然是一张图片 但是请注意 我们的fileList是一个数组
                // 需要知道当前上传成功的是哪一张图片
                this.fileList = this.fileList.map((item) => {
                  // 去找谁的uid等于刚刚记录下来的id
                  if (item.uid === this.currentFileUid) {
                    //Location为传回的地址,但是没有http字段         
                    return { url: "http://" + data.Location, upload: true }
                  }
                  return item;
                });         
              }
            }
          );
        }
      },

成功后返回 的locagion 就是图片地址 加上http://就可以获取了

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
腾讯云对象存储(COS)是一种云存储服务,可以用于存储和管理大量的非结构化数据,例如图片、视频、文档等。在Vue3中使用腾讯COS可以通过以下步骤进行: 1. 下载腾讯COS的js库cos-js-sdk-v5.js,并将其引入到Vue3项目中。 2. 创建一个COSHelper.js文件,作为共用的上传方法。在该文件中,可以编写上传文件的逻辑,包括创建COS实例、设置上传参数、执行上传操作等。 3. 创建一个腾讯COS参数配置文件variables.js,用于存储腾讯COS的相关配置信息,例如COS的SecretId、SecretKey、Bucket等。 4. 在Vue3的页面中,引入COSHelper.js和variables.js,并调用上传方法进行文件上传。 下面是一个示例代码,演示了在Vue3中使用腾讯COS进行文件上传的过程: ```javascript // main.js import COS from 'cos-js-sdk-v5' import COSHelper from './COSHelper' import variables from './variables' Vue.prototype.$COS = COSHelper.initCOS(variables) // COSHelper.js import COS from 'cos-js-sdk-v5' const COSHelper = { initCOS(variables) { const cos = new COS({ SecretId: variables.COS_SECRET_ID, SecretKey: variables.COS_SECRET_KEY }) return cos }, uploadFile(cos, file) { const params = { Bucket: variables.COS_BUCKET, Region: variables.COS_REGION, Key: file.name, Body: file } return new Promise((resolve, reject) => { cos.putObject(params, (err, data) => { if (err) { reject(err) } else { resolve(data) } }) }) } } export default COSHelper // variables.js const variables = { COS_SECRET_ID: 'your_secret_id', COS_SECRET_KEY: 'your_secret_key', COS_BUCKET: 'your_bucket', COS_REGION: 'your_region' } export default variables // Upload.vue <template> <div> <input type="file" @change="handleFileUpload"> <button @click="uploadFile">上传文件</button> </div> </template> <script> export default { data() { return { file: null } }, methods: { handleFileUpload(event) { this.file = event.target.files[0] }, uploadFile() { this.$COS.uploadFile(this.file) .then(data => { console.log('文件上传成功', data) }) .catch(error => { console.error('文件上传失败', error) }) } } } </script> ``` 请注意,上述代码仅为示例,实际使用时需要根据自己的腾讯COS配置信息进行相应的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值