2015-08-10 3 views
4

Проблема: если загруженный файл превышает 5000 КБ, валидатор возвращает сообщение «обязательно» вместо сообщения «max». Зачем ?Сообщение о неправильной ошибке Laravel Multiple Validator

$file = (Input::file('inputName')); 
$fileValidator = Validator::make(
    array('Field Name' => $file), 
    array('Field Name' => 'required|max:5000|mimes:jpeg,png,bmp') 
); 

if($fileValidator->fails()){ 
    return $fileValidator->errors()->all(':message'); 
} 

Update: Эта проблема возникает проверку особенно * .PSD файлов.

Обновление 2: когда я var_dump ($ file), я вижу это;

object(Symfony\Component\HttpFoundation\File\UploadedFile)#9 (7) { 
    ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> 
    bool(false) 
    ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> 
    string(52) "4-47970_rsasecurityanalyticsevolutionofsiemebook.pdf" 
    ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> 
    string(24) "application/octet-stream" 
    ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> 
    int(0) 
    ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=> 
    int(1) 
    ["pathName":"SplFileInfo":private]=> 
    string(0) "" 
    ["fileName":"SplFileInfo":private]=> 
    string(0) "" 
} 

Как вы можете видеть, имя пути и имя_файла выглядит нулевым. Вот почему laravel возвращает требуемое сообщение. Вот новый вопрос: почему имя_файла null?

+0

Пожалуйста, вы можете заменить 'Поле name' с фактическим именем поля вы имя в форме – Digitlimit

+0

@Digitlimit i уже изменил его. –

+0

вы можете сделать 'dd (Input :: file ('inputName'));' просто подтвердить, что файл был отправлен? – Digitlimit

ответ

4

Когда вы загружаете файл больше, чем разрешенный размер (максимальный размер сообщения и максимальный размер загрузки), php не отправляет его на сервер, поэтому ваш код не получает файл и не требуется ошибка.

перейдите на ваш php.ini и увеличьте максимальную максимальную загрузку и максимальный размер сообщения. это должно решить вашу проблему.

вы также можете установить их с помощью PHP:

ini_set('post_max_size', '64M'); 
ini_set('upload_max_filesize', '64M'); 

или вы можете редактировать файл php.ini для них:

post_max_size = 64M 
upload_max_filesize = 64M 
Смежные вопросы