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

时间:2018-04-16 01:46:59

标签: javascript php android node.js base64

我试图将我的REST-webserver从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不发送"数据:image / png; base64,..."在开始时,这会导致base64-img失败。

在PHP中,我刚刚做了某事。像:

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

哪个有效。我希望应用程序继续工作而不更新它,所以我需要在服务器端修复它。

有人可以帮助我吗?谢谢你们!

1 个答案:

答案 0 :(得分:1)

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

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