广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >纯javascript前端如何实现base64图片下载
  • 169
分享到

纯javascript前端如何实现base64图片下载

2024-04-02 19:04:59 169人浏览 独家记忆
摘要

小编给大家分享一下纯javascript前端如何实现base64图片下载,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!背景在项目

小编给大家分享一下纯javascript前端如何实现base64图片下载,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

背景

项目开发过程中,经常会有图片导出的需求,尤其是带有图表类的应用,通常需要将图表下载导出。

在chrome等新版浏览器中实现base64图片的下载还是比较容易的:

  1. 创建一个a标签

  2. 将a标签的href属性赋值为图片的base64编码

  3. 指定a标签的download属性,作为下载文件的名称

  4. 触发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()
 }

以上是“纯javascript前端如何实现base64图片下载”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网JavaScript频道!

--结束END--

本文标题: 纯javascript前端如何实现base64图片下载

本文链接: https://www.lsjlt.com/news/77041.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 纯javascript前端如何实现base64图片下载
    小编给大家分享一下纯javascript前端如何实现base64图片下载,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!背景在项目...
    99+
    2022-10-19
  • 如何实现前端图片懒加载
    这篇文章主要介绍了如何实现前端图片懒加载,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。定义图片懒加载又称图片延时加载、惰性加载,即在用户需要...
    99+
    2022-10-19
  • js前端如何实现图片懒加载
    这篇文章主要介绍js前端如何实现图片懒加载,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!思路:将页面里所有img属性src属性用data-xx代替,当页面滚动直至此图片出现在可视区域...
    99+
    2022-10-19
  • javascript如何下载图片
    这篇文章主要介绍“javascript如何下载图片”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“javascript如何下载图片”文章能帮助大家解决问题。JavaScript下载图片的步骤:步骤1:...
    99+
    2023-07-06
  • php如何实现下载图片
    这篇文章主要介绍了php如何实现下载图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php实现下载图片的方法:1、使用“file_get_contents”实现下载图片;2...
    99+
    2023-06-08
  • 如何实现webpack图片转为base64
    这篇文章将为大家详细讲解有关如何实现webpack图片转为base64,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。下载url-loader yarn add ...
    99+
    2023-06-22
  • vue如何实现纯前端表格滚动分页加载
    今天小编给大家分享一下vue如何实现纯前端表格滚动分页加载的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。实现效果实现过程&l...
    99+
    2023-06-29
  • javascript如何实现图片移动端
    这篇文章主要介绍“javascript如何实现图片移动端”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“javascript如何实现图片移动端”文章能帮助大家解决问题。首先,要实现图片的移动,我们需要...
    99+
    2023-07-06
  • JavaScript如何实现图片懒加载
    这篇文章主要介绍了JavaScript如何实现图片懒加载,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。图片懒加载imagegetBoundClientRect 的实现方式,监...
    99+
    2023-06-27
  • vue.js如何实现图片转Base64上传图片并预览
    这篇文章主要为大家展示了“vue.js如何实现图片转Base64上传图片并预览”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue.js如何实现图片转Base6...
    99+
    2022-10-19
  • element前端如何实现压缩图片功能
    这篇文章主要讲解了“element前端如何实现压缩图片功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“element前端如何实现压缩图片功能”吧!实现效果如下图所示,从 580kb -&g...
    99+
    2023-07-05
  • nodejs如何读取文件二进制前端响应blob或base64显示图片
    目录读取文件二进制 前端响应blob或base64显示图片nodejs读取文件 createReadStream读取文件二进制 前端响应blob或base64显示图片 express...
    99+
    2022-11-13
    nodejs读取文件二进制 nodejs前端响应blob nodejs base64显示图片
  • php获取网络图片转base64如何实现
    本篇内容主要讲解“php获取网络图片转base64如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php获取网络图片转base64如何实现”吧!一、使用PHP获取网络图片首先,我们需要获取...
    99+
    2023-07-05
  • 纯css如何实现点击图片放大
    本篇内容主要讲解“纯css如何实现点击图片放大”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“纯css如何实现点击图片放大”吧!纯css实现点击图片放大的方法:1、创建一个HTML示例文件;2、设...
    99+
    2023-07-05
  • 纯css如何实现更改图片颜色
    这篇文章主要介绍纯css如何实现更改图片颜色,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使网页更加美化。它也是一...
    99+
    2023-06-08
  • 如何实现Data URI scheme以及实图片 base64 编码
    这篇文章将为大家详细讲解有关如何实现Data URI scheme以及实图片 base64 编码,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、 Data...
    99+
    2022-10-19
  • php如何实现图片转base64格式并上传
    本文操作环境:windows10系统、php 7、thinkpad t480电脑。在实际开发项目的过程中处理图片上传是一定会遇到的,例如使用thinkphp的小伙伴一定很熟悉import("@.ORG.UploadFile&quo...
    99+
    2019-05-21
    php 图片 base64
  • Javascript中如何实现图片的延迟加载
    这篇文章主要介绍Javascript中如何实现图片的延迟加载,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Javascript之图片的延迟加载的实例详解作用:保证页面打开的速度(3s...
    99+
    2022-10-19
  • 如何使用纯jQuery实现前端分页功能
    这篇文章给大家分享的是有关如何使用纯jQuery实现前端分页功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。效果展示:因为核心代码主要在前端jquery,为了简便,后台就用se...
    99+
    2022-10-19
  • 前端图片懒加载的原理与3种实现方式举例
    目录一. 图片懒加载的目的二. 图片懒加载的原理方法三. 图片懒加载的实现方法3.1 滚动监听+scrollTop+offsetTop+innerHeight3.2 滚动监听+get...
    99+
    2023-03-01
    怎么实现图片懒加载 懒加载实现原理 前端图片懒加载原理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作