微信小程序文件流转base64文件,wx.arrayBufferToBase64()方法已弃用

news/2025/2/13 20:35:37/

wx.arrayBufferToBase64 方法在小程序>微信小程序的基础库版本 2.4.0 起已废弃,不建议继续使用。
我们可以将ArrayBuffer 转换为 base64,使用base64-js来实现转换。具体操作如下:
1、安装base64-js,可以通过npm进行安装,或者从github获取该代码块。 代码如下:

(function (a) {if ("object" == typeof exports && "undefined" != typeof module) module.exports = a();else if ("function" == typeof define && define.amd) define([], a);else {var b;b = "undefined" == typeof window ? "undefined" == typeof global ? "undefined" == typeof self ? this : self : global : window, b.base64js = a()}
})(function () {return function () {function b(d, e, g) {function a(j, i) {if (!e[j]) {if (!d[j]) {var f = "function" == typeof require && require;if (!i && f) return f(j, !0);if (h) return h(j, !0);var c = new Error("Cannot find module '" + j + "'");throw c.code = "MODULE_NOT_FOUND", c}var k = e[j] = {exports: {}};d[j][0].call(k.exports, function (b) {var c = d[j][1][b];return a(c || b)}, k, k.exports, b, d, e, g)}return e[j].exports}for (var h = "function" == typeof require && require, c = 0; c < g.length; c++) a(g[c]);return a}return b}()({"/": [function (a, b, c) {'use strict';function d(a) {var b = a.length;if (0 < b % 4) throw new Error("Invalid string. Length must be a multiple of 4");var c = a.indexOf("="); - 1 === c && (c = b);var d = c === b ? 0 : 4 - c % 4;return [c, d]}function e(a, b, c) {return 3 * (b + c) / 4 - c}function f(a) {var b, c, f = d(a),g = f[0],h = f[1],j = new m(e(a, g, h)),k = 0,n = 0 < h ? g - 4 : g;for (c = 0; c < n; c += 4) b = l[a.charCodeAt(c)] << 18 | l[a.charCodeAt(c + 1)] << 12 | l[a.charCodeAt(c + 2)] << 6 | l[a.charCodeAt(c + 3)], j[k++] = 255 & b >> 16, j[k++] = 255 & b >> 8, j[k++] = 255 & b;return 2 === h && (b = l[a.charCodeAt(c)] << 2 | l[a.charCodeAt(c + 1)] >> 4, j[k++] = 255 & b), 1 === h && (b = l[a.charCodeAt(c)] << 10 | l[a.charCodeAt(c + 1)] << 4 | l[a.charCodeAt(c + 2)] >> 2, j[k++] = 255 & b >> 8, j[k++] = 255 & b), j}function g(a) {return k[63 & a >> 18] + k[63 & a >> 12] + k[63 & a >> 6] + k[63 & a]}function h(a, b, c) {for (var d, e = [], f = b; f < c; f += 3) d = (16711680 & a[f] << 16) + (65280 & a[f + 1] << 8) + (255 & a[f + 2]), e.push(g(d));return e.join("")}function j(a) {for (var b, c = a.length, d = c % 3, e = [], f = 16383, g = 0, j = c - d; g < j; g += f) e.push(h(a, g, g + f > j ? j : g + f));return 1 === d ? (b = a[c - 1], e.push(k[b >> 2] + k[63 & b << 4] + "==")) : 2 === d && (b = (a[c - 2] << 8) + a[c - 1], e.push(k[b >> 10] + k[63 & b >> 4] + k[63 & b << 2] + "=")), e.join("")}c.byteLength = function (a) {var b = d(a),c = b[0],e = b[1];return 3 * (c + e) / 4 - e}, c.toByteArray = f, c.fromByteArray = j;for (var k = [], l = [], m = "undefined" == typeof Uint8Array ? Array : Uint8Array, n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", o = 0, p = n.length; o < p; ++o) k[o] = n[o], l[n.charCodeAt(o)] = o;l[45] = 62, l[95] = 63}, {}]}, {}, [])("/")
});

2、在utils文件下,建一个base64.js。将base64-js的代码复制到base64.js内。
3、在utils文件下,建一个util.js。引入base64.js文件。

import base64 from "@/utils/base64.js"
const toBase = (arrayBuffer) => {const uint8Array = new Uint8Array(arrayBuffer);const base64Data = base64.fromByteArray(uint8Array);return base64Data;
}
export {toBase 
}

4、页面使用此方法

import { toBase } from '@/utils/util.js'
//转换图片 需要加上'data:image/png;base64,'   
//不需要转则直接toBase(接口返回的文件流)
const base64Data = 'data:image/png;base64,' + toBase (接口返回的文件流);

http://www.ppmy.cn/news/1571793.html

相关文章

excel 日期转换

需求如下&#xff1a; 在excel 里面输入一个4515,4表示年份&#xff0c;2024年&#xff0c;51表示该年的51周&#xff0c;5表示日&#xff0c;周日用1表示&#xff0c;周一用2表示&#xff0c;以此类推&#xff0c;需要转换为年份/月份/日期 若想用公式来实现这一转换&#x…

算法之 数论

文章目录 质数判断质数3115.质数的最大距离 质数筛选204.计数质数2761.和等于目标值的质数对 2521.数组乘积中的不同质因数数目 质数 质数的定义&#xff1a;除了本身和1&#xff0c;不能被其他小于它的数整除&#xff0c;最小的质数是 2 求解质数的几种方法 法1&#xff0c;根…

讲解下MySql的外连接查询在SpringBoot中的使用情况

在Spring Boot中使用MySQL的外连接查询时&#xff0c;通常通过JPA、MyBatis或JDBC等持久层框架来实现。外连接查询主要用于从多个表中获取数据&#xff0c;即使某些表中没有匹配的记录。外连接分为左外连接&#xff08;LEFT JOIN&#xff09;、右外连接&#xff08;RIGHT JOIN&…

【HarmonyOS Next 自定义可拖拽image】

效果图&#xff1a; 代码&#xff1a; import display from "ohos.display" import { AppUtil } from "pura/harmony-utils"/*** 自定义可拖拽图标组件*/ Component export default struct DraggableImage {imageResource?: ResourceimageHeight: numbe…

【PDF提取内容】如何批量提取PDF里面的文字内容,把内容到处表格或者批量给PDF文件改名,基于C++的实现方案和步骤

以下分别介绍基于 C 批量提取 PDF 里文字内容并导出到表格&#xff0c;以及批量给 PDF 文件改名的实现方案、步骤和应用场景。 批量提取 PDF 文字内容并导出到表格 应用场景 文档数据整理&#xff1a;在处理大量学术论文、报告等 PDF 文档时&#xff0c;需要提取其中的关键信…

使用Node.js进行串口通信

目录 一、 安装 serialport 库二.、实现方法1.打开串口并配置参数2. 向串口传递信息3. 接收串口信息4. 处理错误5. 关闭串口6. 使用解析器7. 获取串口列表 三、 完整示例代码 一、 安装 serialport 库 首先&#xff0c;需要安装 serialport 库。可以通过 npm 安装&#xff1a;…

实战教程:如何利用DeepSeek结合深度学习与NLP技术实现跨模态搜索与个性化推荐

跨模态搜索与个性化推荐是当前人工智能领域中的热门话题,DeepSeek作为结合深度学习与自然语言处理(NLP)技术的创新平台,提供了在多模态数据间进行搜索与推荐的强大能力。本教程将带你一步步实现基于DeepSeek的跨模态搜索和个性化推荐,详细讲解整个过程的实现方法,从数据准…

蓝耘智算平台部署deepseek-助力深度学习

一、deepseek的几大特点&#xff08;一&#xff09;自然语言处理能力&#xff08;二&#xff09;代码生成与编程辅助功能&#xff08;三&#xff09;数学推理与计算能力&#xff08;四&#xff09;多模态处理能力 二、蓝耘智算平台即 “元生代” 智算云平台三、蓝耘智算平台部署…