vue中上传并展示svga

1、上传此处用el-upload 添加属性accept=“.svga” 只能上传svga格式的文件

<el-upload
          class="upload-demo"
          :action="actionUrl"
          :show-file-list="false"
          :on-success="handleAvatarSuccess"
          :http-request="uploadProductPic"
          accept=".svga"
          :on-error="errorUpload"
          :before-upload="beforeAvatarUpload"
          :file-list="fileList"
          :on-remove="doDeleteImg"
        >
          <el-button size="small" type="primary">点击上传</el-button>
        </el-upload>

详细方法:

async upload(file) {
            try {
                const response = await cosUploadInfo()
                console.log('response', response)
                const cos = new COS({
                    SecretId: response.secret_id, // 身份识别ID
                    SecretKey: response.secret_key // 身份秘钥
                })
                if (file) {
                    // 执行上传操作
                    cos.putObject({
                        Bucket: response.bucket, /* 存储桶 */
                        Region: response.region, /* 存储桶所在地域,必须字段 */
                        Key: 'liveGift' + '/' + this.guid(), /* 文件名 */
                        StorageClass: 'STANDARD', // 上传模式, 标准模式
                        Body: file, // 上传文件对象
                        onProgress: function(progressData, callback) {
                            console.log(progressData)
                        }
                    }, (err, data) => {
                        console.log('err', err)
                        console.log('data', data)
                        console.log('文件-----', data.Location, '文件地址------') // 可以拿到文件地址
                        // 上传成功之后
                        if (data.statusCode === 200) {
                            this.ruleForm.MovingImg = this.getCaption(data.Location)
                            console.log(this.ruleForm.MovingImg)
                            this.svgaBoxShow = true
                            this.$nextTick(() => {
                                var mycanvas = document.getElementById('giftStyleAdd')
                                // 修改容器大小
                                mycanvas.style.width = 146 + 'px'
                                mycanvas.style.height = 146 + 'px'
                                // 这里动态给ID,列表
                                this.player = new SVGA.Player('#giftStyleAdd')
                                var parser = new SVGA.Parser('#giftStyleAdd')
                                // 这里使用动态加载的方式
                                parser.load('https://' + data.Location, (videoItem) => {
                                    console.log(videoItem)
                                    this.widthDialog = String(videoItem.videoSize.width)
                                    this.player.setVideoItem(videoItem)
                                    this.player.startAnimation()
                                })
                            })
                        }
                    })
                }
            } catch (e) {
                console.log('catch', e)
            }
        },

3、展示svga步骤

  • 1、npm i svgaplayerweb
  • 2、import SVGA from ‘svgaplayerweb’;
  • 3、添加元素
  • <div id="giftStyleAdd" class="svga" />
  • 4、创建方法
  • // 展示svga方法 async showSvg(url) { this.$nextTick(() => { var mycanvas = document.getElementById('giftStyleAdd') // 修改容器大小 // mycanvas.style.width = 146 + 'px' // mycanvas.style.height = 146 + 'px' var player = new SVGA.Player('#giftStyleAdd') var parser = new SVGA.Parser('#giftStyleAdd') parser.load(url, function(videoItem) { player.setVideoItem(videoItem) player.startAnimation() }) }) },
    5、需要时调用 showSvg 方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值