我在PHP中有以下代码,它最适用,很好。我正在从移动设备向此脚本发送图像,该脚本将其解码为img文件并在服务器上创建一个文件。每次编码base64时,我都有99.9%的确定。
<?php
header('Access-Control-Allow-Origin: *');
header('Content-Type: image/jpeg');
$data = ($_POST['imageData']);
define('UPLOAD_DIR', 'images/');
$img = str_replace('data:image/jpeg;base64,', '', $data);
$data = base64_decode($img);
$file = UPLOAD_DIR . uniqid() . '.jpg';
file_put_contents($file, $data);
echo ('{"imgUrl" : "' . $file . '"}');
?>
然后返回图像URL以添加到数据库中。
问题是,大多数情况下它会解码为.jpg文件,有时会解码为txt文件。我不明白它为什么这样做,因为它有点随机。但是我注意到有时它会以$ _POST出现,有时候,$ _POST是空的。所以我看着使用:
$data = json_decode(file_get_contents('php://input'));
但同样,它似乎不一致。但我提出了一个逻辑陈述,例如:
$data = ($_POST['imageData']);
if($data == NULL) {
$data = json_decode(file_get_contents('php://input'));
}
有什么理由我应该知道代码为什么有效,有时候不起作用?
答案 0 :(得分:0)
我知道这个问题很旧,但是通过查看此主题,它是第一个出现的问题。这样,每个在研究此问题的人都可以立即找到正确答案的链接。
您应该选中此PHP - get base64 img string decode and save as jpg (resulting empty image )
还要检查您使用的条件,因为
if ($data === NULL)
可能与
不同if ($data == NULL)
此外,您将base64字符串错误地保存到图像文件中。 检查该链接,让我知道它是否有帮助。