Интеграция Laravel / vue-froala-wysiwyg - PullRequest
0 голосов
/ 06 февраля 2019

Я бы хотел внедрить систему загрузки изображений в моем проекте Laravel / VueJS , но я не могу найти правильный способ сделать это.Как я могу настроить свою функцию Controller для обработки этой загрузки?

Редактировать:

Это моя конфигурация редактора:

config: {
    imageUploadParam: 'imageFile',
    imageUploadURL: '/froala/upload/image',
    imageUploadMethod: 'POST',
    imageMaxSize: 5 * 1024 * 1024,
    imageAllowedTypes: ['jpeg', 'jpg', 'png'],
}

И эта функция обрабатывает запрос:

public function uploadImage(Request $request)
{
    $file = $request['imageFile'];

    $name = $file->getClientOriginalName();
    $name = strtolower(str_replace(' ', '', $name));

    $path = $file->hashName();
    $image = Image::make($file);

    Storage::put("/threads/{$path}", (string) $image->encode());

    $multimedia = Multimedia::create([
        'name' => $name,
        'path' => $path
    ]);

    return ['link' => $multimedia->path];
}

Я использую библиотеку Intervention Image для обработки загрузки изображения.

Редактировать2:

Я получаю ошибку 419, связанную с токеном csrf.Итак, как я могу передать его функции?Я знаю, как его получить, но использование редактора imageUploadParams не работает:

imageUploadParams: {
    csrf: this.csrf
}

csrf: document.querySelector('meta[name="csrf-token"]').getAttribute('content'),

1 Ответ

0 голосов
/ 06 февраля 2019

Из документации:

При вставке изображения в HTML-редактор WYSIWYG на сервер автоматически отправляется HTTP-запрос.

Конкретный URL-адрес, которыйзапрос может быть указан с помощью опции конфигурации imageUploadURL.

Настройте файл routes.php, чтобы правильно направить запрос на выбранный контроллер:

Route::post('/upload', 'FilesController@store');

Затем, в вашем контроллере вы можете обрабатывать загрузку изображений, как обычно.Важной частью является то, что вы возвращаете путь к файлу после его сохранения.

Возвращаемый JSON должен выглядеть следующим образом: {"link": "path / to / image.jpg"}

Вот пример того, как это может выглядеть:

public function store(){
    $filepath = request()->file('file')->store('images', 'public');
    return ['link' => $filepath];
}

Конечно, не стесняйтесь выполнять любые проверки или обработки, которые вам нужны.

...