我有一些大型Javascript对象,我想将其编码为base-64,以用于AWS动态`

let objStr = new Buffer(JSON.stringify(obj), 'ascii');
new Buffer(objStr, 'base64').toString('ascii') !== objStr

我尽量让这件事尽可能简单.

如何对JSON进行base-64编码并将其安全解码回原始值?

推荐答案

您误解了Buffer(str, [encoding])构造函数,encoding告诉构造函数创建str使用了什么编码,或者构造函数应该使用什么编码将str解码为字节数组.

基本上,Buffer类代表字节流,只有当您将其从/转换为字符串时,编码才会进入上下文.

您应该改为使用buffer.toString("base64")来获得缓冲区内容的base-64编码.

let objJsonStr = JSON.stringify(obj);
let objJsonB64 = Buffer.from(objJsonStr).toString("base64");

Node.js相关问答推荐

tsc:当我上传 React+next js 和节点项目时,在 heroku 找不到

NestJS TypeORM 可选查询不起作用

为什么我在生产环境中 deproy Next.js 示例项目时 CSS 不起作用?

Socket IOFlutter 未连接

如何申请在NextJS上下载文件的许可?

ESlint - 错误:必须使用导入来加载 ES 模块

ChunkLoadError:加载块 node_modules_next_dist_client_dev_noop_js 失败

npm:何时使用 `--force` 和 `--legacy-peer-deps`

graphqlHTTP 不是函数

是否有 Angular / Angular-CLI 和 Node.js 的兼容性列表?

如何在 Node 中的 http.request() 上设置超时?

使用 nvm-windows 时更新 npm

`npm install` 后出现关于 python 语法错误的错误?

NPM - 无法替换配置中的 env:${NPM_TOKEN}

内部/模块/cjs/loader.js:582 抛出错误

Node.js puppeteer - 如何设置导航超时?

如何确定已安装的 webpack 版本

Javascript ES6 TypeError:没有'new'就不能调用类构造函数客户端

为什么不鼓励使用`.catch(err => console.error(err))`?

使用绝对路径导入组件时,Jest 给出“找不到模块”