@digamer

Как загрузить картинку через Summernote (Laravel)?

Доброго времени суток. Очень долго искал решение задачи загрузки картинок на сайт по средством редактора summernote. Нашел здесь - ссылка.

Для полноты картины выкину код.

App.php
Route::post('/supfile', 'Admin\tosaController@supfile');


Скрипт
$(document).ready(function() {
        $('#summernote3').summernote({
            height: 230,
            minHeight: null,
            maxHeight: null,
            focus: false,
            callbacks: {
                onImageUpload: function(files, editor, welEditable) {
                    for (var i = files.length - 1; i >= 0; i--) {
                        sendFile(files[i], this);
                    }
                },
            },
            dialogsFade: true,
            fontNames: ['Roboto Light', 'Roboto Regular', 'Roboto Bold'],
            toolbar: [
                ['style', ['style']],
                ['font', ['bold', 'underline', 'clear']],
                ['color', ['color']],
                ['para', ['ul', 'ol', 'paragraph']],
                ['table', ['table']],
                ['insert', ['link', 'video', 'picture']],
                ['view', ['fullscreen', 'codeview', 'help']]
            ],
        });
    });

    function sendFile(file, el) {
        var form_data = new FormData();
        form_data.append('file', file);
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
        $.ajax({
            data: form_data,
            type: "POST",
            url: '/supfile',
            cache: false,
            contentType: false,
            enctype: 'multipart/form-data',
            processData: false,
            success: function(url) {
                $(el).summernote('editor.insertImage', url);
            }
        });
    }

Controller
public function supfile(Request $request){

        $file = $request->File('file');
        $fileArray = array('image' => $file);
        $rules = array(
            'image' => 'mimes:jpeg,jpg,png,gif|required|max:10000' // max 10000kb
        );
        $validator = Validator::make($fileArray, $rules);

        if ($validator->fails()){
            $error = 'Invalid file type / size';
            return $error;
        }else{
            $uploads_dir = public_path().'/images/cae/';
            $extension = Input::file('file')->getClientOriginalExtension();
            $tmp_name = $_FILES["file"]["tmp_name"];
            $name = $filename = date('Ymdhis').'_'.$_FILES["file"]["name"].'.' . $extension;
            move_uploaded_file($tmp_name, "$uploads_dir/$name");
            return "/images/cae/".$name;
        };
    }


При попытке загрузить файл вылазит ошибка
POST st.local/supfile 500 (Internal Server Error)


Все советы с этой ошибкой сводятся к тому что у меня проблемы с csrf-token, хотя другой аякс запрос отлично работает. При поытке зайти напрямую st.local/supfile 500 - уходит в 404.
  • Вопрос задан
  • 1025 просмотров
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
Можно например сделать так: sanasol.ws/2017/04/05/vuejslaravel-quill-editor-ha...

По дефолту summernote тоже в base64 запиливает картинки.


POST st.local/supfile 500 (Internal Server Error)
Все советы с этой ошибкой сводятся к тому что у меня проблемы с csrf-token


500 это вообще любая ошибка сервера. Где логи, дебаги с нормальной инфой о том что там ошибка и что за ошибка?
Ответ написан
Комментировать
@digamer Автор вопроса
Решил выводом ссылок картинок из базы и добавлению их через стандартный summernote insert image.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы