vue+element+cos-js-sdk-v5上传文件到cos

该博客详细介绍了如何在前端应用中引入阿里云的cos-js-sdk-v5库,实现文件上传到对象存储服务,并进行上传进度的实时监控。在上传过程中,对文件大小进行了限制,且支持取消上传操作。同时,展示了相关的代码实现,包括模板和脚本部分。
摘要由CSDN通过智能技术生成

1、 引入cos-js-sdk-v5

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

直接上代码

<template>

<div>

<el-upload v-if="!disabled" class="upload-demo isDel" ref="upload" :action="'#'"
      accept=".rar, .zip, .doc, .docx, .pdf, .png, .jpg, .jpeg" :on-preview="handlePreview" :file-list="fileList" :on-change="onChange"
       :on-success="handleSuccess" :disabled="disabled" :show-file-list="false" :http-request="uploadToCos">
      <el-button v-if="!disabled" slot="trigger" type="primary">选取文件</el-button>
      <div v-if="!disabled" slot="tip" class="el-upload__tip">
        支持扩展名:.rar .zip .doc .docx .pdf .png .jpg .jpeg
      </div>
    </el-upload>

<el-row class="jindutiao" v-if="isJindu">
      <el-col>
        <el-progress :percentage="videoPercent">
        </el-progress>
      </el-col>
      <el-col>
        <i class="el-icon-error" @click="zhongzhi( fileList[0])"  v-if="isZuzhi"></i>
      </el-col>
    </el-row>

</div>
</template>

<script>
  import COS from 'cos-js-sdk-v5';
  const config = {
    SecretId: '',//cos储存桶的SecretId
    SecretKey: '',//cos储存桶的SecretKey
    Bucket: '',//存储桶
    Region: 'ap-shanghai',//存储桶所在地域
  };

  const cos = new COS({
    SecretId: config.SecretId,
    SecretKey: config.SecretKey,
  });

    export default {
    name: "ApplyIndexModule",
    data() {

     return {

        fileList:[],

        file:"",

        isJindu:false,

        videoPercent:0,

        taskId:'',

        

     }

     methods: {

onChange(file, fileList) {
        this.file = file;
        this.fileList = fileList;

},

     uploadToCos(file) {
        console.log(file)

        const fileInfo = file.file;

        const isLtM = fileInfo.size / 1024 / 1024 < 1024;

        if (!isLtM) {
          return that.$message.error("上传文件大小不能超过 1GB!");
        }
        if (that.fileList.length != 1) {
         
          // that.fileList.slice(0, 1);
          return that.$message.error("只能上传一个文件,请删除原文件");
        }

        }

        cos.putObject({
          Bucket: config.Bucket,
          Region: config.Region,
          Key: `upload/`+file.file.name, // 存储的路径
          Body: fileInfo, // 上传对象
          onProgress: progressData => {//上传进度
            // console.log(progressData)
            const percent = parseInt(progressData.percent * 10000) / 100;
            const speed = parseInt((progressData.speed / 1024 / 1024) * 100) / 100;
            var total = progressData.total  //文件总大小
            var loaded = progressData.loaded //文件已上传大小
            // console.log('进度:' + percent + '%; 速度:' + speed + 'Mb/s;');
            // if (!that.isJindu) {
              that.isJindu = true;
              that.isZuzhi = true;
              // console.log('total'+total)
            // }
            that.videoPercent = parseInt((loaded / total * 100).toFixed(0))//实时监测上传进度
            // if(that.videoPercent == 100){
            //   that.isJindu = false;
            // }
            console.log(that.videoPercent)
          },
          onTaskReady:taskId =>{
            console.log(taskId)
            that.taskId = taskId;
          },
        }, (err, data) => {
          console.log(data);
          console.log(err)
          if (data && data.statusCode == 200) {
            // setTimeout(function()  {
                that.isZuzhi = false
            // },1000)
            
            that.isshanchu = true;
            console.log(data);
            console.log('上传完成!');
          } else {
            console.log(err);
            console.log('上传失败!错误信息:' + err.message);
          }
        });

     },

      zhongzhi( file){
        console.log(this.taskId)
        cos.cancelTask(this.taskId);//终止上传cos
        this.isJindu = false;
      },

}

</script>

要实现Spring Boot Vue Element UI Mybatis-Plus的文件分享,可以按照以下步骤进行: 1. 首先,需要搭建一个基于Spring Boot的后端应用程序。使用Mybatis-Plus来操作数据库,设计合适的实体类和数据库表,用于存储文件的相关信息,例如文件名、路径、大小等。 2. 在后端应用程序中创建一个文件上传的接口,用于接收前端传递的文件。可以使用Spring Boot内置的MultipartFile类来处理文件上传,将文件保存到指定的目录中,并将文件相关信息保存到数据库中。 3. 创建一个文件下载的接口,用于访问和下载已上传的文件。通过接口可以获取文件的相关信息,包括文件的路径和文件名。使用Java的File类或者相关的工具类来读取文件,并将文件以流的形式返回给前端。 4. 在前端应用程序中使用VueElement UI来实现文件分享页面。可以设计一个文件列表的组件,展示已上传的文件信息,例如文件名、大小、上传时间等。使用Element UI的Table组件可以方便地展示数据。 5. 在文件列表组件中,为每个文件增加下载功能的按钮或链接。按钮或链接的点击事件调用后端提供的文件下载接口,将文件下载到用户本地。 6. 可以考虑增加文件的搜索和排序功能,方便用户查找和管理文件。可以使用Element UI的Input组件和Table组件的排序功能来实现。 7. 为了提高用户体验,可以加入文件预览的功能。可以使用第三方插件,如Viewer.js,来实现文件的在线预览。 总结来说,实现Spring Boot Vue Element UI Mybatis-Plus的文件分享需要搭建一个后端应用程序来处理文件的上传和下载,使用数据库存储文件相关信息;在前端应用程序中使用VueElement UI来展示和管理文件,实现文件的搜索、排序和预览功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值