Декодировать строку Base64 в PHP, полученную из сообщения JSON

Я работаю над проектом, в котором я могу выбрать изображение (простой выбор файла) и отправить его через 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)

но не имеет значения, то же самое при попытке добавить заголовки, но ничего ..

Что я делаю не так, или есть что-то очевидное, что я не получаю?

Спасибо.

1

Решение

Я решил это каким-то образом:

Я написал функцию, которая получает строку 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;

}

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector