[英]Decode Base64 string in PHP recieved from JSON post
我正在一个项目中,我可以选择一个图像(选择简单文件)并将其通过JSON发送到PHP MySQL插入页面。
上传页面如下所示:
if (input.files && input.files[0]) {
var FR = new FileReader();
FR.onload = function(e) {
$('#img').attr("src", e.target.result);
var Naam = $('input[type=file]').val();
$('#base').text(e.target.result);
var Foto = e.target.result;
var Barcode = $('#barcode').val();
obj['Barcode'] = Barcode;
obj['Naam'] = Naam;
obj['Foto'] = Foto;
//execute ajax send
$.ajax({
url : 'insert.php',
type : 'POST',
data : obj,
dataType : 'json',
success : function(msg) {
alert("msg");
}
});
//$.post("insert.php", obj, function (data) {}, "json");
//alert("msg");
};
FR.readAsDataURL(input.files[0]);
和我的PHP页面:
$Barcode = $_POST["Barcode"];
$Naam = $_POST["Naam"];
$Name = preg_replace('/^.+[\\\\\\/]/', '', $Naam);
$Foto = base64_decode($_POST["Foto"]);
$query = "INSERT INTO voorraad_foto (barbody, location, foto) VALUES ('$Barcode','$Name','{$Foto}')";
$results = mysqli_query($db,$query);
我的表字段是BLOB。
但是,当它执行此操作时,一切正常,除了它不会将其插入为Blob而是纯字符串
我已经尝试过删除
preg_replace('#data:image/[^;]+;base64,#', '', $Foto)
但没有任何区别,尝试添加标题时相同,但没有任何区别。
我在做什么错,还是我没有得到明显的帮助?
谢谢。
我以某种方式解决了它:
我编写了一个获取Base64字符串,对其进行解码并将其写入Temp文件的函数。 然后,我再次读取该文件,并将其上传到我的数据库。 成功后,删除文件。
这可能不是最有效的方法,但是可以!
function WriteToImageAndGetData($base64_string, $File) {
//Write to file
$ifp = fopen($File, "wb");
$data = explode(',', $base64_string); //Split Base64 string
fwrite($ifp, base64_decode($data[1])); //Decode Base64 string
fclose($ifp);
//Read from file
$fp = fopen($File, 'r');
$data = fread($fp, filesize($File)); //Read file contents
$data = addslashes($data);
fclose($fp);
return $data;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.