我正在尝试将我的 REST 网络服务器从 PHP 转换为 Express.js/Node.js。
有一个请求包含由 Android 的 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);
这是工作。我希望应用程序在不更新的情况下继续工作,所以我需要在服务器端修复它。
有人可以帮我吗?谢谢你们!
您不需要使用任何库,它都在 nodejs 中。
const image = req.body['image']; const decodedData = new Buffer(image, 'base64'); fs.writeFileSync(PICTURES_PATH + 'image.png', decodedData);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句