Node.js:将 Android-Base64 编码图像另存为文件

Posted

技术标签:

【中文标题】Node.js:将 Android-Base64 编码图像另存为文件【英文标题】:Node.js: Save Android-Base64 encoded image as File 【发布时间】:2018-09-25 16:17:53 【问题描述】:

我正在尝试将我的 REST 网络服务器从 php 转换为 Express.js / Node.js。

有一个请求包含一个由 androids Base64 库编码的图像:

ByteArrayOutputStream bAOS = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.PNG, 100, bAOS);
params.put("image", Base64.encodeToString(bAOS.toByteArray(), Base64.DEFAULT));

在服务器端,它应该简单地解码数据并将图像保存到目录中。例如,我尝试了以下方式,使用“base-64”npm-package (https://www.npmjs.com/package/base-64):

const image = req.body['image'];
const decodedData = this.base64.decode(image);
this.fs.writeFileSync(PICTURES_PATH + 'image.png', decodedData);

但它似乎解码不好,我无法查看文件,而且它的大小太小了。这不是我唯一的尝试,我尝试使用 Node.js-buffers 或另一个名为“base64-img”(https://www.npmjs.com/package/base64-img)的包。最后一个适用于我使用 Postman 发送的测试请求,但无法处理应用程序发送的数据。控制台显示 Android-app 在开始时没有发送“data:image/png;base64,...”,导致 base64-img 失败。

在 PHP 中我只是做了某事。喜欢:

$decodedImage=base64_decode("$image");
file_put_contents("pictures/".$name.".PNG", $decodedImage);

哪个有效。我希望应用在不更新的情况下继续工作,因此我需要在服务器端对其进行修复。

有人可以帮我吗?谢谢大家!

【问题讨论】:

【参考方案1】:

你不需要使用任何库,它都在 nodejs 中。

const image = req.body['image']; const decodedData = new Buffer(image, 'base64'); fs.writeFileSync(PICTURES_PATH + 'image.png', decodedData);

【讨论】:

谢谢!工作完美,如此简单......不知道为什么这些库有这么多下载...... new Buffer 已弃用,现在使用 Buffer.from

以上是关于Node.js:将 Android-Base64 编码图像另存为文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Node.js 将 base64 编码图像(字符串)直接上传到 Google Cloud Storage 存储桶?

Windows上安装Node.js

node.js - 带有 base64 的 http [重复]

如何使用SendGrid将图像嵌入到Node.js中的html邮件中

Centos7部署Node.js

使用 NODE_MODULE_VERSION 64 针对不同的 Node.js 版本编译。此版本的 Node.js 需要 NODE_MODULE_VERSION 67