Загрузка файла в Laravel - ошибка отображения пользователю, если он пытается загрузить большой файл - PullRequest
0 голосов
/ 20 февраля 2019

В Laravel я могу успешно загрузить пользователя на страницу, но я хочу знать, есть ли способ показать ошибку этому пользователю до того, как он отправит страницу, на которой файлслишком большой.Что-то типа «Файл, который вы выбрали для загрузки, имеет размер 25 МБ. Получите его менее 20 МБ.»

Существует ли какой-либо пакет, который может справиться с этим?

Ответы [ 2 ]

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

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

$(document).ready(function() {

    $('input[type="file"]').change(function(event) {
        var fileSize = this.files[0].size;
        var maxAllowedSize = //add your value here;
        // check the file size if its greater than your requirement
        if(size > maxAllowedSize){
          alert('Please upload a smaller file');
          this.val('');
        }

    });
});

Проверка на стороне сервера (вы можете изменить типы пантомимы согласнотип файла, который вы хотите разрешить):

<?php 

public function store(Request $request){

    $request->validate([
        'file_input_name' => 'file|max:25000|mimes:jpeg,bmp,png',
        // add validations for other fields here
    ]);
}

Для дополнительной проверки Документация

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

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

1.Создайте Request класс:

Запустите команду php artisan make:request FileRequest

Затем в файле, созданном в App\Http\Requests\FileRequest, сделайте следующее:

  • Измените метод authorize, чтобы он возвращал true вместо false.
  • При методе rules вы возвращаете свои правила проверки:

return [ "file_input" => "max:20480", //If your input type's file name is "file_input" ];

Согласно документации , max rule проверяет, что размер ввода от пользователя не будет превышать указанное число в килобайтах для файлов.

2.Вы также можете создать валидатор в вашем методе контроллера:

use Validator;

public function store(Request $request)
    {
        $validator = Validator::make($request->only('file_input'), [
            'file_input' => 'max:20480',
        ]);

        if ($validator->fails()) {
            return redirect()
                        ->route('your.route.name')
                        ->withErrors($validator)
                        ->withInput();
        }

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