Как реализовать SummerNote удалить изображение в CI 3 с CSRF - PullRequest
1 голос
/ 27 февраля 2020

Привет! Я использовал код из следующей ссылки, чтобы разрешить загрузку изображений на сервер. summernote js загрузить изображение

Но я понятия не имею, как удалить изображение с сервера, если пользователь удаляет его из редактора в CI 3 с помощью CSRF?

Если я установил CI3 CSRF в FALSE, все работает нормально, но файл не удаляется с сервера, если CI3 CSRF равен TRUE

код javascript: основан на Мухаммед Суфиан ответ

<!-- include libraries(jQuery, bootstrap) -->
<link href="http://netdna.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.css" rel="stylesheet">
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.js"></script>
<script src="http://netdna.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.js"></script>

<!-- include summernote css/js-->
<link href="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.1/summernote.css" rel="stylesheet">
<script src="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.1/summernote.js"></script>

<script>
$(document).ready(function () {
$('#summernote').summernote({
    height: 400,
    callbacks: {
        onImageUpload: function (image) {
            uploadImage(image[0]);
        },
        onMediaDelete : function(target) {
            deleteImage(target[0].src);
        }
    }

});
function uploadImage(image) {
    var data = new FormData();
    data.append("image", image);
    data.append("<?= $this->security->get_csrf_token_name() ?>", "<?= $this->security->get_csrf_hash() ?>");
    $.ajax({
        data: data,
        type: "POST",
        url: "<?= site_url('summernote-image-upload') ?>",
        cache: false,
        contentType: false,
        processData: false,
        success: function (url) {
            var image = url;
            $('#summernote').summernote("insertImage", image);
        },
        error: function (data) {
            console.log(data);
        }
    });
}
function deleteFile(src) {
    $.ajax({
        data: {src : src},
        type: "POST",
        url: "<?= site_url('summernote-image-delete') ?>",
        cache: false,
        success: function(response) {
            console.log(response);
        }
    });
}
});
</script>

часть кода:

//routes.php
$route['summernote-image-delete'] = 'welcome/summernote-image-delete';

//Welcome.php Controller:
function summernote_image_delete(){
    $src = $this->input->post('src');
    $file_name = str_replace(base_url(), '', $src);

    if(unlink($file_name)){
        return 'File Delete Successfully';
    }
}

Найден Грязный способ решить эту проблему, исключив summernote ajax удалить CSRF в config.php file

$config['csrf_exclude_uris'] = array('summernote-image-delete');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...