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