JavaScript中关于base64的一些事

yizhihongxing

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中replace使用方法总结

    JavaScript中replace使用方法总结 replace()方法是JavaScript中字符串对象的一个常用方法,其作用是在字符串中搜索指定的子字符串或者正则表达式,并将其替换为新的子字符串。在本篇文章中,我们将对replace()方法进行详细的讲解和总结。 基本使用 replace()方法的基本语法如下: string.replace(search…

    JavaScript 2023年5月28日
    00
  • 浅谈js的ajax的异步和同步请求的问题

    浅谈JS的Ajax的异步和同步请求的问题 什么是Ajax? 在Web开发中,Ajax是一种在不重新加载整个页面的情况下与服务器交换数据的技术。它使页面可以异步地(意味着不重新加载整个网页)更新并显示某一部分内容。 异步请求和同步请求的区别 在Ajax中,请求有两种方式,异步和同步。 异步请求: 异步请求意味着当请求被发送后,页面可以在等待服务器响应的同时进行…

    JavaScript 2023年6月11日
    00
  • JS变量中有var定义和无var定义的区别以及es6中let命令和const命令

    JS变量中有var定义和无var定义的区别 在Javascript中,有使用var定义变量和不使用var直接定义变量两种方式。 1. 使用var定义变量 使用var定义的变量会存在变量提升,即在变量声明之前,该变量也可以被访问到。这种定义方式的变量作用域是该变量所在的函数作用域(如果在函数内定义)或全局作用域(如果在函数外定义)。 示例1:使用var定义变量…

    JavaScript 2023年6月10日
    00
  • JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)

    下面是详细的攻略: 问题背景 在前端开发中,我们经常需要控制用户输入的字符串长度。而一些中文字符在计算长度时需要算作2个字符,而英文字母和数字只算作一个字符,因此需要一种准确计算字符串长度的方法。 解决方案 我们可以通过遍历字符串的每个字符,对于中文字符的长度算作2,英文字母和数字的长度算作1,最后累加每个字符的长度来得到字符串的实际长度。 示例代码 以下是…

    JavaScript 2023年5月28日
    00
  • Javascript Date setTime() 方法

    以下是关于JavaScript Date对象的setTime()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的setTime()方法 JavaScript Date对象的setTime()方法设置对象的时间部分。该方法接受一个整数,表示自1970年1月1日00:00:00 UTC以来的毫秒数。如果参数超出了JavaScript所能表…

    JavaScript 2023年5月11日
    00
  • ASP.NET向Javascript传递变量两种实现方法

    ASP.NET是一个非常常用的Web框架,它提供了可以与Javascript进行交互的方法,本文将详细讲解如何实现ASP.NET向Javascript传递变量的两种常用方法。 方法一:使用hidden field hidden field是一个隐藏的input元素,它可以在服务器端存储数据,作为Javascript代码可以读写的全局变量。下面是ASP.NET…

    JavaScript 2023年6月10日
    00
  • 在JavaScript的jQuery库中操作AJAX的方法讲解

    下面是“在JavaScript的jQuery库中操作AJAX的方法讲解”的完整攻略。 jQuery的AJAX简介 AJAX是Asynchronous JavaScript and XML的缩写,指的是一种利用JavaScript和XML技术实现异步通信的方式。jQuery是一个非常流行的JavaScript库,也提供了非常便捷的AJAX操作方式。 jQuer…

    JavaScript 2023年5月19日
    00
  • Javascript 计算字符串在localStorage中所占字节数

    要计算字符串在localStorage中所占字节数,需要先了解以下几个概念: 字符串长度:字符串中字符的个数。 字符编码:字符在计算机中的储存方式。常见的有ascii码、unicode、utf-8等。 字节:计算机中数据的存储单位。 在localStorage中储存字符串时,它实质上是以字节的形式储存的。因此,计算字符串在localStorage中所占字节数…

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