Я пытаюсь загрузить несколько изображений в Cloudinary. Использование Ajax для записи данных в sql, используя второй файл php. Данные также должны быть сериализованы при загрузке и не сериализованы при отображении. Причина сериализации заключается в том, что мне нужно больше информации при загрузке изображений, например, защищенный URL, оригинальное имя файла и т. Д. Ниже приведен фрагмент кода, который записывает в файл php ниже этого.
cloudinary.openUploadWidget({
cloud_name: 'username',
upload_preset: 'preset',
sources: ['local', 'camera'],
multiple: true,},
function (error, result) {
console.log(error, result);
const eventData = result.data;
if (result.event === "success") {
var user_id = <?php echo $user['user_id']; ?>;
var image_name = result.info.original_filename;
var image_url = result.info.secure_url;
var thumbnail_url = result.info.thumbnail_url;
$.ajax({
url: "save.php",
type: "POST",
data: {
image_url : image_url,
image_name : image_name,
thumbnail_url : thumbnail_url,
}
});
document.getElementById("images").innerHTML += '<li class="cloudinary-thumbnail active"><img src="'+result.info.thumbnail_url+'" data-src="'+result.info.thumbnail_url+'" ><input type="hidden" name="image_name[]" value="'+result.info.original_filename+'"><input type="hidden" name="image_url[]" value="'+result.info.secure_url+'"><h5>'+result.info.original_filename+'</h5></li>';
}
});}, false);
Вот файл save.php
if ($_POST) {
$user_id = $_POST['user_id'];
$image_name = $_POST['image_name'];
$image_url = $_POST['image_url'];
$thumbnail_url = $_POST['thumbnail_url'];
$arraylength = $_POST['arraylength'];
$images = array();
for ($i=0; $i < sizeof($image_name); $i++) {
$images[$i]['name'] = $image_name;
$images[$i]['url'] = $image_url;
$images[$i]['thumbnail_url'] = $thumbnail_url;
};
try {
$stmt = $db->prepare("UPDATE images_collection SET images = :images WHERE user_id = :user_id");
$stmt->execute(array(
':images'=>serialize($images),
':user_id'=>$user_id
));
echo "true";
} catch (PDOException $e) {
echo $e->getMessage();
}
}