vue+oss+element上传拿走不谢

1 篇文章 0 订阅

为了前端小伙伴少走一些弯路

最近公司业务有使用oss的业务 以下代码是基于oss 进行封装的代码

const OSS = require('ali-oss')
//     'aliyun_oss_bucket'=>"mrstatic"
export const uploadOss = function (file, onprogress) {
  return new UploadFile(file, onprogress)
}
class UploadFile {
   config = {
     region: 'oss-cn-beijing', // your region
     accessKeyId: '', // your accessKeyId
     accessKeySecret: '', // accessKeySecret
     bucket: '' // 
   }
   tempCheckpoint = null
   client = null
   resumeclient = null
   onprogress = null
   file = null
   objectkey = null
   constructor (file, onprogress) {
     //  super(this)
     this.file = file
     onprogress && (this.onprogress = onprogress)
     this.client = new OSS(this.config)
     this.resumeclient = new OSS(this.config)
     this.objectkey = new Date().getTime() + file.name
   }
   upload () {
     const _this = this
     console.log('upload')
     return new Promise(async function (resolve, reject) {
       try {
         let result = await _this.client.multipartUpload(_this.objectkey, _this.file, {
           progress: async function (p, checkpoint) {
             console.log('checkpoint', checkpoint)
             // 断点记录点。 浏览器重启后无法直接继续上传,需用户手动触发进行设置。
             if (checkpoint) {
               _this.onprogress({
                 percent: checkpoint.partSize / checkpoint.fileSize
               })
             }
             _this.tempCheckpoint = checkpoint
           },

           meta: { year: 2019, people: 'test' },
           mime: 'video/mp4'
         })
         _this.onprogress({
           percent: 100
         })
         console.log(result)
         resolve(result)
       } catch (e) {
         reject(e)
         console.log(e)
       }
     })
   }
   resumeUpload () {
     const _this = this
     return new Promise(async function (resolve, reject) {
       try {
         let result = await _this.resumeclient.multipartUpload(_this.objectkey, _this.file, {
           progress: async function (p, checkpoint) {
             // 断点记录点。 浏览器重启后无法直接继续上传,需用户手动触发进行设置。
             if (checkpoint) {
               _this.onprogress({
                 percent: checkpoint.partSize / checkpoint.fileSize
               })
             }
             _this.tempCheckpoint = checkpoint
           },
           checkpoint: _this.tempCheckpoint,
           meta: { year: 2019, people: 'hanjixin' },
           mime: 'video/mp4'
         })
         _this.onprogress({
           percent: 100
         })
         resolve(result)
       } catch (e) {
         reject(e)
         console.log(e)
       }
     })
   }
   cancel () {
     this.client.cancel()
     this.resumeclient.cancel()
   }
}

element 上传部分

我看了一下官网只提供了http-request (覆盖默认的上传行为,可以自定义上传的实现 )
但是没有过多的详细介绍

  • k看了一下源码arguments 只返回了 下面的对象
	const options = {
        headers: this.headers,
        withCredentials: this.withCredentials,
        file: rawFile,
        data: this.data,
        filename: this.name,
        action: this.action,
        onProgress: e => {
          this.onProgress(e, rawFile);
        },
        onSuccess: res => {
          this.onSuccess(res, rawFile);
          delete this.reqs[uid];
        },
        onError: err => {
          this.onError(err, rawFile);
          delete this.reqs[uid];
        }
      };
  • 里面继续看 e 需要传一个对象
	file.percentage = ev.percent || 0;
	// ev 就是 e 这个对象
	// { percent: number }

所以e 要穿的对象必须包含 percent 属性

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot和Vue都是非常流行的开发框架,可以用来构建各种类型的应用程序。在这里,SpringBoot用于后端开发,提供了许多功能和库来简化开发过程,包括SpringSecurity用于安全管理,MyBatisPlus用于数据库操作,Redis用于缓存,RabbitMQ用于消息队列等等。 而Vue作为前端开发框架,提供了一种组件化的方式来构建用户界面。它可以与vuex、vue-router、axios等配合使用,实现状态管理、路由导航和数据请求等功能。此外,还可以使用vuetify和element来创建美观的UI界面,使用echarts来展示数据图表等等。 根据您提供的信息,springboot vue个人博客系统是一个基于SpringBoot和Vue开发的在线预览系统。该系统包括了前端部分和后端部分,前端代码可以通过提供的链接进行下载,而后端部分则使用了SpringBoot作为框架,并结合了各种技术和库来实现不同的功能。您可以通过访问提供的在线地址来预览该系统的功能和界面。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [基于springboot+vue个人博客搭建](https://blog.csdn.net/m0_54853465/article/details/126351754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值