JS中如何将base64转换成file

yizhihongxing

将base64转换成file的过程主要可分为以下两步:

  1. 将base64字符串转换成二进制数据
  2. 将二进制数据转换成file对象

下面是具体的代码实现。

将base64字符串转换成二进制数据

我们可以使用atob函数将base64字符串转换成二进制数据。在JS中,base64字符串常常会作为"data:image/png;base64,"、"data:image/jpeg;base64,"等格式的图片数据存在,我们需要先将这些格式的前缀去除。

let base64Data = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAQAAA...'
let data = base64Data.replace(/^.*?,/, '') // 去除前缀
let binaryData = atob(data)

将二进制数据转换成file对象

要将二进制数据转换成file对象,我们需要使用Blob对象。Blob对象表示一段二进制数据,并且可以设置类型、大小、字节等元数据。具体实现如下:

let blob = new Blob([binaryData], { type: 'image/png' })
let file = new File([blob], 'sample.png', { type: 'image/png', lastModified: new Date().getTime() })
console.log(file)  // 输出file对象

在上面的代码中,我们使用Blob构造函数根据二进制数据新建一个Blob对象,设置type属性为图片类型(image/png),然后将Blob对象放入一个新的File对象(这里设置filename为"sample.png",type同样为"image/png")中,最后获得转换后的file对象。

下面是一个完整的示例,我们将一张已有的图片转换成file对象,然后将其输出至控制台:

<img id="myImg" src="sample.png">
let img = document.getElementById('myImg')
let canvas = document.createElement('canvas')
let ctx = canvas.getContext('2d')
canvas.width = img.width
canvas.height = img.height
ctx.drawImage(img, 0, 0, canvas.width, canvas.height)
let base64Data = canvas.toDataURL('image/png')
let data = base64Data.replace(/^.*?,/, '') // 去除前缀
let binaryData = atob(data)
let blob = new Blob([binaryData], { type: 'image/png' })
let file = new File([blob], 'sample.png', { type: 'image/png', lastModified: new Date().getTime() })
console.log(file)  // 输出file对象

在这个示例中,我们将一张图片渲染在canvas中,并以PNG格式导出其base64字符串,最后利用上面提到的两步,将base64字符串转换成file对象。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS中如何将base64转换成file - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 简单了解JavaScript中的new Function

    下面是有关JavaScript中的new Function的详细解释和示例: 什么是new Function? new Function是JavaScript语言中的一种特殊语法,它可以使用字符串的形式来动态创建一个函数。 语法格式如下: new Function([param1, param2, …paramN], functionBody) 其中,p…

    JavaScript 2023年5月27日
    00
  • 给html超链接设置事件不使用href来完成跳

    要给HTML超链接设置事件,不使用href来完成跳转,可以使用JavaScript中的event.preventDefault()方法来阻止默认行为,然后使用window.location方法来完成跳转。 具体实现步骤如下: 在HTML中设置一个<a>标签,没有href属性,但需要在标签中添加一个唯一标识符,如id属性,以便于在JavaScrip…

    JavaScript 2023年6月10日
    00
  • JavaScript使用indexOf获得子字符串在字符串中位置的方法

    JavaScript中indexOf()方法可以用来查找字符串中一个子字符串的位置。它会在调用它的字符串中搜索指定的子字符串,并返回该子字符串在字符串中的位置。如果没有找到指定的子字符串,则返回-1。 下面是使用indexOf()方法来获得子字符串在字符串中位置的方法: 语法 string.indexOf(searchValue [, fromIndex])…

    JavaScript 2023年5月28日
    00
  • react-router-dom v6 使用详细示例

    这里给出使用 React-Router-Dom 版本 6.x 的详细攻略,包含基本概念、用法介绍、代码示例等,方便大家快速上手。 基本概念 React-Router-Dom 是一个 React 的声明式路由库,在 React 应用中使用路由的时候非常方便。在使用 React-Router-Dom 时,主要涉及到以下几个核心概念: Router:定义路由的容器…

    JavaScript 2023年6月11日
    00
  • JavaScript的function函数详细介绍

    JavaScript的function函数详细介绍 在JavaScript中,function函数是一种非常重要的机制。本文将详细介绍function函数的用法,包括如何定义和调用函数,传递参数等。 定义和调用function函数 要定义一个function函数,可以使用function关键字后跟函数名(如果有的话)和一对括号,然后在大括号中编写函数体代码。…

    JavaScript 2023年5月18日
    00
  • 一个简单的javascript类定义例子

    下面我将详细讲解一个简单的 JavaScript 类定义的例子。 1. 创建一个类 首先,我们需要通过 class 关键字来定义一个类,并且需要为该类指定一个名称。例如,我们定义一个名为 Car 的类: class Car { constructor(make, model) { this.make = make; this.model = model; }…

    JavaScript 2023年5月27日
    00
  • asp.net(C#)中给控件添加客户端js事件的方法

    给控件添加客户端js事件是asp.net(C#)开发中的常见需求,我们可以通过以下步骤完成: 第一步:在aspx页面中引入js文件 在aspx页面中需要引入相应的js文件,例如: <script type="text/javascript" src="~/scripts/jquery-3.6.0.min.js"&…

    JavaScript 2023年6月11日
    00
  • JavaScript实现系统防挂机(无操作弹窗)的示例详解

    下面我来为您详细讲解“JavaScript实现系统防挂机(无操作弹窗)的示例详解”。 什么是系统防挂机? 系统防挂机是指通过一定的技术手段和操作,防止用户长时间不进行操作而导致系统挂起或进程崩溃的现象。常见的方式包括弹出操作提示框或计时器等。 实现无操作弹窗的方法 实现无操作弹窗的方法有很多,下面列举两条示例: 示例一:使用计时器 使用计时器的方法就是在用户…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部