За последние 24 часа нас посетили 20867 программистов и 1138 роботов. Сейчас ищут 372 программиста ...

Валидация файла

Тема в разделе "Laravel", создана пользователем lordconst, 16 май 2020.

  1. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    151
    Симпатии:
    1
    Не работает валидация файла. Пробовал копировать кусок кода из гугла (естественно, изменяя под себя). Проблема: не загружает файлы разрешенных расширений.
    Класс реквеста:
    PHP:
    1. public function rules()
    2.     {
    3.         return [
    4.             'ticket_name' => 'required|min:10|max:50',
    5.             'ticket_description' => 'required|min:15|max:500',
    6.             'ticket_date_off' => 'nullable|date|after_or_equal:now',
    7.             'files' => 'array',
    8.             'files.*' => 'mimes: jpg, jpeg, png, doc, docx, pdf, txt',
    9.         ];
    10.     }
    Поле на форме:
    PHP:
    1. <div class="form-group">
    2.                         <label for="ticket_files">Файлы:</label>
    3.                         <input type="file" name="files[]" multiple>
    4.                     </div>
    Метод:
    PHP:
    1. if($request->hasFile('files')) {
    2.             foreach ($request->file('files') as $f) {
    3.                 $filename = time().'_'.$f->getClientOriginalname();
    4.                 $f->move(public_path() . '/upload/',$filename);
    5.                 $file = File::create([
    6.                     'ticket_id' => $ticket->id,
    7.                     'file' => '/upload/'.$filename,
    8.                 ]);
    9.             }
    10.         }
    При попытке загрузить вообще любой файл (хоть запрещенное, хоть разрешенное расширение) пишет: Поле files.0 должно быть файлом одного из следующих типов: jpg, jpeg, png, doc, docx, pdf, txt.
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Ось какая? С этим сложности бывают, поскольку этот валидатор не расширение проверяет
    https://laravel.com/docs/7.x/validation#rule-mimes
    А это в свою очередь делается через определённый сервис линукса (если на линуксе), где-то была тут моя темка на этот счёт. Хотя я встречался с проблемами только на docx, xlsx и подобный файлах, потому что это на самом деле zip-архивы, и линь давал для них тип zip. Точно не помню, как вышел из положения. По-моему, не ставил это правило для docx руками, ну и у меня отдача файлов была непрямая, так что в принципе не так это страшно было. Шелл туда было не залить
    --- Добавлено ---
    С другими типами файлов проблем не встречал
     
  3. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    151
    Симпатии:
    1
    винда 10