我试图将我的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);
哪个有效。我希望应用程序继续工作而不更新它,所以我需要在服务器端修复它。
有人可以帮助我吗?谢谢你们!
答案 0 :(得分:1)
您不需要使用任何库,它们都在nodejs中。
const image = req.body [' image']; const decodingData = new Buffer(image,' base64'); fs.writeFileSync(PICTURES_PATH +' image.png',decodingData);