Я работаю над проектом, где я могу выбрать изображение (простой выбор файла) и отправить его через JSON на страницу вставки PHP MySQL.Декодировать Base64 строку в PHP, полученную от сообщения JSON
Загрузить страница выглядит следующим образом:
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.
Но когда выполнить это, все работает отлично, за исключением того, что не вставляет его в качестве сгустка, но чистая строка
Я попытался с удалением
preg_replace('#data:image/[^;]+;base64,#', '', $Foto)
, но не в любом случае, при попытке добавить заголовки, но ничего ..
Что я делаю неправильно, или есть что-то очевидное, что я не получаю?
Thx.
Вы уязвимы для [SQL инъекций атаки] (http://bobby-tables.com), и Ваш запрос не будет в какой-то момент, потому что данные сырые бинарные изображения (если он загружен вообще/правильно) WILL естественно содержит '' 'и другие метасимволы SQL, нарушая ваш запрос. –
Из любопытства, что такое SQL вашей таблицы voorraad_foto? –
Я буду уточнять и защищать его от инъекций, когда он работает. просто пытаясь заставить его работать. И я проверил, запрос работает нормально, с этим изображением нет кавычек. Пробовал это с добавлением, тот же результат. И это моя таблица запроса: CREATE TABLE 'voorraad_foto' ( ' barbody' Int (8) неподписанных NOT NULL по умолчанию '0', ' location' VARCHAR (255) набор символов latin1 сверять latin1_bin по умолчанию NULL, ' foto' blob, ПЕРВИЧНЫЙ КЛЮЧ ('barbody') ) ENGINE = MyISAM DEFAULT CHARSET = latin1 –