【发布时间】:2020-03-28 06:06:16
【问题描述】:
我有一个可以检索 base64 字符串并将其保存到图像中的 Node Js,这是我的 Node Js 代码:
=== 节点 JS 代码 ===
var q = req.body;
var extention = ".jpg";
var dir = "img/customer/idcard/";
var base64Data = q.image.replace(/^data:image\/\w+;base64,/, "");
fs.unlink("../" + dir + OldGambar + extention, (err) => {
if (err) console.log(err);
// console.log(OldGambar + ' was deleted');
});
require("fs").writeFile("../" + dir + NewGambar + extention, base64Data, 'base64', function(err) {
if (err) console.log(err);
});
以下是我使用 Android (JAVA) 将 Image 转换为 Base64 字符串的代码:
Bitmap image = ((BitmapDrawable) varimgIDCard.getDrawable()).getBitmap();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
Encode = Base64.encodeToString(byteArrayOutputStream.toByteArray(),Base64.DEFAULT);
在 JAVA 中,一切正常,图像本身可以毫无错误地打开
下面是我使用 PHP 将 Image 转换为 Base64 的代码:
$path = $dest.$a;
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$strimg = 'data:image/' . $type . ';base64,' . base64_encode($data);
上述代码在创建文件时也没有问题或错误,但是当我打开文件时。它导致错误“无效的JPEG结构:两个SOF标记”
为什么会这样?我在 PHP 编码中做错了吗?
顺便说一下,这里是来自 Android (JAVA) 的 SUCCESS Base64 的结果: https://drive.google.com/open?id=1G2XHJxE6QJ0GjQcU5pclP3x7mIxMECzo
顺便说一下,这里是来自 PHP 的 UNSUCCESSFUL Base64 的结果: https://drive.google.com/open?id=1PXueFtaws5iT-BlFbpvoGhNzCmT6_8Lp
是的,出于某种原因,PHP 的 base64 是单行的,而 Android 不是,这可能是 PHP 失败的主要原因。
哦,这里是base64 PHP无法打开的图片截图:
【问题讨论】:
标签: php android node.js base64