vue不使用vue-qr生成下载二维码

本文介绍如何在Vue项目中不使用vue-qr插件,实现点击展示及下载二维码的功能。后端返回二维码图片地址,点击查看详情时加载图片,下载时处理跨域问题。关键步骤包括:展示图片、处理下载事件、解析流和处理跨域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:不使用插件生成下载二维码。
表格内某一列点击查看,展示二维码,且支持下载,如图。
在这里插入图片描述
初始化的时候,后端返回表格数据的同时会把二维码图片地址返回。所以,整个逻辑就是,点击不同查看携带不同图片地址去访问接口。

1、点击查看,展示图片。
在这里插入图片描述
在这里插入图片描述

2、点击下载按钮(这里要解决跨域问题,本地开发和上测试服和生产的时候都得解决),红色ip去除
在这里插入图片描述在这里插入图片描述

3、接下来就是拿每个图片的标识开始发请求。
在这里插入图片描述
在这里插入图片描述

4、请求过去后,解析后端返回的流。
在这里插入图片描述
注意:这里需要注意的就是图片下载跨域处理,关于如何解决,上篇博文说过。
先关代码,我贴一下,有的可根据自己业务需要扩展,但是拿到后端返回东西 解析流的逻辑都差不多。

下载事件:

 const downloadByBlob = (url, name = '二维码') => {
      const removeUrlPrefix = url.replace(/^http:\/\/[^/]+/, '')
      console.log(removeUrlPrefix)
      downloadURL(removeUrlPrefix).then((res) => {
        console.log(res, '-----------------------data---------------------------')
        downloadImage(res.data, name)
      })
    }

解析流过程:

export const downloadImage = function(imgSrc, name) {
  const fileName = `${name}.jpg`
  const myBlob = new Blob([imgSrc], { type: 'image/jpeg' })
  const link = document.createElement('a')
  link.href = URL.createObjectURL(myBlob)
  link.download = fileName
  link.click()
  link.remove()
  URL.revokeObjectURL(link.href)
}

跨域处理:

 '/upload': {
        //代理图片下载的接口
        target: 'http://10.100.13.241:7480/',
        changeOrigin: true,
        secure: false, // 设置支持https协议的代理
        pathRewrite: {
            '^/upload': ''
        }
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值