如何用前端实现base64图片下载(代码)
本篇文章给大家带来的内容是关于如何用前端实现base64图片下载(代码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
背景
在项目开发过程中,经常会有图片导出的需求,尤其是带有图表类的应用,通常需要将图表下载导出。
在chrome等新版浏览器中实现base64图片的下载还是比较容易的:
创建一个a标签
将a标签的href属性赋值为图片的base64编码
指定a标签的download属性,作为下载文件的名称
触发a标签的点击事件
但是这套逻辑在IE下是不行的,这样写会直接报错。
所以IE下需要单独处理,这里IE在处理这种文件的时候给提供了一个单独的方法:window.navigator.msSaveOrOpenBlob(blob, download_filename)调用这个方法可以直接触发IE的下载,还是比较方便的。具体做法如下:
// 截取base64的数据内容(去掉前面的描述信息,类似这样的一段:data:image/png;base64,)并解码为2进制数据 var bstr = atob(imgUrl.split(',')[1]) // 获取解码后的二进制数据的长度,用于后面创建二进制数据容器 var n = bstr.length // 创建一个Uint8Array类型的数组以存放二进制数据 var u8arr = new Uint8Array(n) // 将二进制数据存入Uint8Array类型的数组中 while (n--) { u8arr[n] = bstr.charCodeAt(n) } // 创建blob对象 var blob = new Blob([u8arr]) // 调用浏览器的方法,调起IE的下载流程 window.navigator.msSaveOrOpenBlob(blob, 'chart-download' + '.' + 'png')
整体实现代码
// 这里是获取到的图片base64编码,这里只是个例子哈,要自行编码图片替换这里才能测试看到效果 const imgUrl = 'data:image/png;base64,...' // 如果浏览器支持msSaveOrOpenBlob方法(也就是使用IE浏览器的时候),那么调用该方法去下载图片 if (window.navigator.msSaveOrOpenBlob) { var bstr = atob(imgUrl.split(',')[1]) var n = bstr.length var u8arr = new Uint8Array(n) while (n--) { u8arr[n] = bstr.charCodeAt(n) } var blob = new Blob([u8arr]) window.navigator.msSaveOrOpenBlob(blob, 'chart-download' + '.' + 'png') } else { // 这里就按照chrome等新版浏览器来处理 const a = document.createElement('a') a.href = imgUrl a.setAttribute('download', 'chart-download') a.click() }
相关推荐:
以上是如何用前端实现base64图片下载(代码)的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

磁力链接是一种用于下载资源的链接方式,相比传统的下载方式更为便捷和高效。使用磁力链接可以通过点对点的方式下载资源,而不需要依赖中介服务器。本文将介绍磁力链接的使用方法及注意事项。一、什么是磁力链接磁力链接是一种基于P2P(Peer-to-Peer)协议的下载方式。通过磁力链接,用户可以直接连接到资源的发布者,从而完成资源的共享和下载。与传统的下载方式相比,磁

红果短剧不仅是一个观赏短剧的平台,更是一个内容丰富的宝库,其中还包括了小说等精彩内容。对于许多热爱阅读的用户来说,这无疑是一个巨大的惊喜。然而很多用户们还不太了解究竟该如何在红果短剧中下载并观看这些小说内容,在下文中本站小编就将为大家带来详细的下载步骤介绍,希望能帮助到各位有需要的小伙伴们。红果短剧怎样下载观看答案:【红果短剧】-【听书】-【文章】-【下载】。具体步骤:1、首先打开红果短剧软件,进入到首页中后我们点击页面上方的【听书】按钮;2、然后在小说的页面中我们可以看到有很多的文章内容,在这

当你在自己电脑上登过别人steam账号之后,恰巧这个别人的账号也有wallpaper软件,切换回自己账号之后steam就会自动下载别人账号订阅的壁纸,用户可以通过关闭steam云同步解决。wallpaperengine登录别的号后下载别人的壁纸怎么办1、登陆你自己的steam账号,在设置里面找到云同步,关闭steam云同步。2、登陆你之前登陆的别人的steam账号,打开wallpaper创意工坊,找到订阅内容,然后取消全部订阅。(以后防止找不到壁纸,可以先收藏再取消订阅)3、切换回自己的stea

最近有很多用户都在问小编,115://开头的链接怎么下载?想要下载115://开头的链接需要借助115浏览器,大家下载好115浏览器后,再来看看下面小编整理好的下载教程吧。 115://开头的链接下载方法介绍 1、登录115.com,下载115浏览器并安装。 2、在115浏览器地址栏输入:chrome://extensions/,进入扩展中心,搜索Tampermonkey,安装对应插件。 3、在115浏览器地址栏输入: 油猴脚本:https://greasyfork.org/en/

123云盘是能够下载很多文件的,那么具体该怎么下载文件呢?用户们可以选择需要下载的文件,点击下载,或者是右击文件选择下载。这篇123云盘下载文件方法介绍能够告诉大家具体怎么下载,还不是很了解的朋友赶紧来看看吧!123云盘怎么下载文件1、首先打开软件后,点击需要下载的软件,然后在上面会有一个下载按键。2、或者右击软件,能够在列表里看到下载的按键。3、之后会有一个下载窗口,选择需要下载的位置。4、选择好之后点击下载就能够下载这些文件了。

不少的用户们在使用夸克网盘的时候需要将文件下载下来,可我们想让他保存在本地,那么这要怎么设置?下面就让本站来为用户们来仔细的介绍一下夸克网盘下载文件保存回本地的方法吧。 夸克网盘下载文件保存回本地的方法 1、打开夸克,登录账号进去,点击列表图标。 2、点击图标之后,选择网盘。 3、进去夸克网盘之后,点击我的文件。 4、进去我的文件之后,选择要下载的文件,点击三点图标。 5、勾选要下载的文件,点击下载就行了。

超级人类(superpeople)游戏可以通过steam客户端下载游戏,这款游戏的大小在28G左右,下载到安装通常需要一个半小时,下面为大家带来具体的下载安装教程!新的申请全球封闭测试方法1)在Steam商店(steam客户端下载)搜索“SUPERPEOPLE”2)点击“SUPERPEOPLE”商店页面下方的“请求SUPERPEOPLE封闭测试访问权限”3)点击请求访问权限按钮后,将在Steam库中可确认“SUPERPEOPLECBT”游戏4)在“SUPERPEOPLECBT”中点击安装按钮并下

百度网盘文件怎么下载?百度网盘中是可以下载需要的文件,但是多数的用户不知道如何在百度网盘中下载文件,接下来就是小编为用户带来的百度网盘文件下载方法图文教程,感兴趣的用户快来一起看看吧!百度网盘文件怎么下载1、首先打开百度网盘,找到需要下载的文件;2、然后点击下图工具栏中的【下载】按钮;3、最后会弹出来窗口,选择【下载】即可完成文件下载随时打开。
