Laravel - Удалить загруженный файл в форму - PullRequest
2 голосов
/ 04 мая 2020

Это мое самое первое сообщение здесь, и я прошу прощения, если вопрос был задан ранее.

Также, извините за мой английский sh, я француз ...

Я создаю приложение Laravel и в одной из моих форм я даю пользователю возможность загрузить файл, но это не обязательно.

Однако, как только он загружен, его невозможно удалить в моем маршруте редактирования или загрузки.

Допустим, пользователь загружает файл и передумывает, как он может его удалить?

Вот скриншот формы:

Поле загрузки файла

Вот мой контроллер:

public function update(Request $request, $id)
{
    $this->validate($request, [
        'title' => 'required|string',
        'timing' => 'required',
        'file' => 'file',
        'lesson_id' => 'required',
        'video' => 'required',
        'description' => 'required'
    ]);

    $lecture = Lecture::findOrFail($id);

    $lecture->title = $request['title'];
    $lecture->timing = $request['timing'];
    $lecture->lesson_id = $request['lesson_id'];
    $lecture->video = $request['video'];
    $lecture->description = $request['description'];

    // Fichier
    $file = $request->file('file');

    if ($request->hasFile('file')) {
        $fileName = $file->getClientOriginalName();
    $fileExtension = $file->getClientOriginalExtension();

    $destinationPath = public_path('chapitres-files');

    $file->move($destinationPath, $fileName);
    $lecture->file = 'chapitres-files/' . $fileName;
    }

Итак, можно кто-то объяснит мне, что делать именно в моем контроллере, в моем файле просмотра, а также в моей сети. php?

Большое спасибо!

Gastono

1 Ответ

0 голосов
/ 04 мая 2020

У вас есть 2 основных сценария ios для покрытия:

  1. Пользователь добавляет файл в форму, но решает удалить его перед загрузкой
  2. Пользователь уже загрузил файл и теперь хочет удалить его

Сценарий 1: Удаление файла из объекта формы

Я укажу вам на этот вопрос как отправная точка, поскольку я не являюсь Javascript экспертом

Как удалить файл из FileList


Сценарий 2: Удаление файла из хранилища

Как уже упоминалось в комментариях, в этом сценарии вы захотите удалить файл как отдельное действие, а не как часть кода редактирования / обновления.

Это делает ваши разрушительные действия отделенными от ваших конструктивных действий

Способ, которым я подхожу к этому:

  1. Создайте API-контроллер для ваших файлов (FileController) с методом destroy
  2. Создайте API-маршрут для ваших файлов (api/files/destroy/{file_id})
  3. Используйте javascript для отправьте запрос AJAX на ваш API-маршрут с идентификатором файла, который вы хотите удалить

Примечание: я бы предложил также добавить шаг подтверждения к вашей кнопке «удалить» (например, модальный или предупреждение), чтобы пользователь подтвердил, что он действительно хочет удалить файл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...