Привет! Я использовал код из следующей ссылки, чтобы разрешить загрузку изображений на сервер. 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');