JavaScript中关于base64的一些事

JavaScript中关于base64的一些事

什么是Base64

Base64是一种将二进制数据编码成可打印ASCII字符的方式。它可以将常见的图片、音频、视频等二进制文件以文本方式存储,方便数据传输和存储。

Base64编码与解码

Base64编码

在JavaScript中,可以使用btoa()函数将文本或二进制数据转换为Base64编码。

const text = "Hello, world!";
const base64EncodedText = btoa(text);
console.log(base64EncodedText); // "SGVsbG8sIHdvcmxkIQ=="

更复杂一些的情况下,可以使用TextEncoder API将文本编码成Uint8Array数组,再将数组传递给btoa()函数进行编码。

const text = "Hello, 世界!";
const encoder = new TextEncoder();
const utf8Array = encoder.encode(text);
const base64EncodedText = btoa(String.fromCharCode.apply(null, utf8Array));
console.log(base64EncodedText); // "SGVsbG8sIOeahOW-pee8lA=="

Base64解码

同样,也可以使用JavaScript中的atob()函数将Base64编码的数据解码为文本或二进制数据。

const base64EncodedText = "SGVsbG8sIHdvcmxkIQ==";
const text = atob(base64EncodedText);
console.log(text); // "Hello, world!"

需要注意的是,使用atob()函数解码Base64编码的数据,如果数据包含了非法字符,会抛出一个异常。

const base64EncodedText = "SGVsbG8sIHdvcmxkIQ&="; // 非法字符"&"
try {
  const text = atob(base64EncodedText);
  console.log(text);
} catch (e) {
  console.error(e.message); // "Invalid character: The string to be decoded is not correctly encoded."
}

Base64的应用

图片的Base64编码

对于一张图片,可以使用XMLHttpRequest对象的responseType属性设置为"blob",然后通过FileReader对象读取图片数据,最后使用btoa()函数将二进制数据编码为Base64字符串。

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>Image to Base64</title>
</head>

<body>
  <input type="file" id="imageInput" accept="image/*">
  <button onclick="convertImage()">Convert to Base64</button>
  <div id="imagePreview"></div>

  <script>
    function convertImage() {
      const imageInput = document.getElementById("imageInput");
      const imagePreview = document.getElementById("imagePreview");

      if (imageInput.files && imageInput.files[0]) {
        const fileReader = new FileReader();
        fileReader.onload = function() {
          const image = new Image();
          image.src = this.result;
          image.onload = function() {
            const canvas = document.createElement("canvas");
            canvas.width = image.width;
            canvas.height = image.height;

            const context = canvas.getContext("2d");
            context.drawImage(image, 0, 0);

            const base64String = canvas.toDataURL();
            imagePreview.innerHTML = `<img src="${base64String}">`;
          };
        };
        fileReader.readAsDataURL(imageInput.files[0]);
      }
    }
  </script>
</body>

</html>

文件的Base64编码

对于一个二进制文件,可以使用XMLHttpRequest对象的responseType属性设置为"arraybuffer",然后将获取到的文件数据传递给btoa()函数进行Base64编码。

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>File to Base64</title>
</head>

<body>
  <input type="file" id="fileInput">
  <button onclick="convertFile()">Convert to Base64</button>
  <div id="filePreview"></div>

  <script>
    function convertFile() {
      const fileInput = document.getElementById("fileInput");
      const filePreview = document.getElementById("filePreview");

      if (fileInput.files && fileInput.files[0]) {
        const fileReader = new FileReader();
        fileReader.onload = function() {
          const base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(this.result)));
          filePreview.innerHTML = `Base64: ${base64String}`;
        };
        fileReader.readAsArrayBuffer(fileInput.files[0]);
      }
    }
  </script>
</body>

</html>

以上就是使用JavaScript进行Base64编解码的一些事情。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中关于base64的一些事 - Python技术站

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

相关文章

  • 详解JavaScript节流函数中的Throttle

    以下是详解 JavaScript 节流函数中的 Throttle 的攻略。 1. 什么是节流函数? 节流函数(throttle function)是一种能够控制函数执行频率的函数。通过指定一个时间间隔,来限制函数的执行次数。可以防止因为某些操作过于频繁导致浏览器卡顿或崩溃的问题,提高了页面的性能和用户的体验。 2. Throttle 的实现方式 Thrott…

    JavaScript 2023年6月10日
    00
  • bootstrap表单示例代码分享

    接下来我将为您详细讲解“bootstrap表单示例代码分享”的完整攻略。 Bootstrap表单示例代码分享 1. Bootstrap表单介绍 Bootstrap是目前非常流行的前端开发框架,其能够快速构建响应式、移动设备优先的Web项目。表单是Web开发中非常常见的组件,Bootstrap也提供了丰富的表单组件样式和交互效果,大大简化了表单的开发难度。 B…

    JavaScript 2023年6月10日
    00
  • js 数组操作之pop,push,unshift,splice,shift

    JS数组操作之pop, push, unshift, splice, shift 在JavaScript编程中,数组是重要的数据结构之一。这里将讲解JS中常用的5种数组操作方法——pop, push, unshift, shift和 splice。 1. pop pop()方法是用于移除并返回数组中的最后一个元素。它会改变原始的数组。 语法: arr.pop…

    JavaScript 2023年5月27日
    00
  • Javascript中字符串和数字的操作方法整理

    Javascript中字符串和数字的操作方法整理 JavaScript中有很多操作数字和字符串的方法。在本篇攻略中,我们将提供一些常用的方法,并提供两个示例。 字符串操作方法 1. .length属性 .length属性可以用来确定字符串中的字符数量。 const str = "Hello World"; console.log(str.…

    JavaScript 2023年5月19日
    00
  • 理解javascript中DOM事件

    理解JavaScript中DOM事件的完整攻略 DOM处理事件的机制是基于事件传播(Event propagation)的,事件传播是指从页面最外层开始逐级向内层传递事件的过程。而JavaScript为开发者提供了两种方式来实现事件处理:事件监听器和事件委托。 事件监听器 事件监听器是在事件触发时执行的代码块,可以使用addEventListener方法添加…

    JavaScript 2023年6月10日
    00
  • layui插件表单验证提交触发提交的例子

    下面是关于“layui插件表单验证提交触发提交的例子”的完整攻略: 1. 简介 Layui是一款轻量级、易扩展、特别适合动态界面的前端UI框架,提供全面的组件和功能,并且提供免费的开源许可,可以节省很多开发时间与成本。在Layui中,表单验证是组件中非常重要的功能,可以保证表单提交数据的正确性。 2. 表单验证 2.1. 表单验证插件 Layui表单验证插件…

    JavaScript 2023年6月10日
    00
  • 正则表达式创建方式的区别及编写简单的正则方式(js学习总结)

    让我来详细讲解一下“正则表达式创建方式的区别及编写简单的正则方式”的攻略。 区别 首先,我们需要了解正则表达式创建方式的区别。常见的正则表达式创建方式有以下三种: 字面量方式:使用斜杠(/)将正则表达式包裹起来,例如:/abc/ 构造函数方式:使用new RegExp()构造函数来创建正则表达式对象,例如:new RegExp(‘abc’) 工厂函数方式:使…

    JavaScript 2023年6月10日
    00
  • JavaScript数组排序功能简单实现

    下面是详细的“JavaScript数组排序功能简单实现”的攻略。 一、JavaScript数组排序方法 在JavaScript中,可以使用sort()方法对数组进行排序。sort()方法默认将数组元素转换为字符串后按照字符顺序排序,因此要对数字进行排序,需要提供一个排序函数。 1. sort()方法 sort()方法不接受任何参数,对原数组进行排序,并返回排…

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