2015-05-24 3 views
2

ok .. я не знаю, сколько из вас было в Laravel. Я не мог найти для этого решения.laravel 5 mime image validation throws exception при загрузке mp3 или mp4

Я проверяю загруженное изображение с помощью Validator, устанавливая правила с типом mime jpeg, bmp и png. Я запускаю сообщение об ошибке, если оно не относится к этим типам.

Он отлично работает для всех типов файлов, но когда я загружаю mp3 или mp4, он показывает исключение в моем контроллере.

MyImageController.php Код:

public function addImageDetails() 

    { 

    $input = Request::all(); 

    $ID = $input['ID']; 
    $name = $input['name']; 

    $file = array('image' => Input::file('image')); 

    $rules = array('image' => 'required|mimes:jpeg,jpg,bmp,png'); 


    $validator = Validator::make($file, $rules); 
    if ($validator->fails()) { 

    \Session::flash('flash_message_error','Should be an Image'); 

     return view('addDetails'); 
    } 

    else { 

     //If its image im saving the ID, name and the image in my DB 
    } 

Это ошибка, которую я получаю, когда я загрузить mp3 или mp4

 ErrorException in MyImageController.php line 25: 
     Undefined index: ID 

проверки всех типов файлов, таких как другие [.txt, .doc, .ppt, .exe, .torrent] и т.д ..

+0

Пожалуй '$ вход [ 'ID'] '? –

+0

узнал, что проблема не в mp3 или mp4 .. itz с размером i upload .. если он слишком велик, то php имеет пустую переменную сообщения, кажется ... вот почему я gettin Undefined index: ID .. – sathyadev

+0

Это Великий. Тогда вы опубликуете его как ответ. –

ответ

1

После того, как вы Распределить Request::all(); переменной $input

$input = Request::all(); 

Затем вы должны проверить, имеет ли это какое-либо значение

if (isset($input['ID'])) 

Если условие удовлетворяет требованиям, вы должны позволить ему продолжить дальнейшие шаги, иначе вы должны вернуть представление с собой r, как приведенный ниже код.

if (isset($input['ID'])) 
{ 
    $ID = $input['ID']; 
    $name = $input['name']; 
    $file = array('image' => Input::file('image')); 
} 
else 
{ 
    return view('addDetails')->with('message', 'Image size too large');; 
} 

Update:

Здесь вы проверяете тип изображения

if (isset($input['ID'])) 
{ 
if (Input::file('image')) 
{ 
    $ID = $input['ID']; 
    $name = $input['name']; 
    $file = array('image' => Input::file('image')); 
else 
{ 
    return view('addDetails')->with('message', 'Uploaded file is not an image');; 
} 
} 
else 
{ 
    return view('addDetails')->with('message', 'Image size too large');; 
} 
+0

спасибо alot :), но все же эта логика также покажет сообщение для больших файлов без изображения. выяснить способ ... – sathyadev

+0

Да, мы можем его изменить .. вы хотите показать другое сообщение об ошибке для более крупного файла без изображения? –

+0

да пожалуйста .. я могу положить другой если на этом еще часть knw .. – sathyadev

0

Попробуйте с этим чистым кодом:

public function addImageDetails(Request request){ 
    $this->validate($request, [ 
     'image' => ['required', 'image'] 
    ]); 

    //If its image im saving the ID, name and the image in my DB 

} 

Существует правило называется image, которые могли бы быть полезными для вас в этой ситуации

+0

Я тоже это пробовал .. но это не сработало .. выяснили, что проблема связана с размером моего загруженного файла. Если он слишком велик, он выдает ошибку. Может ли предложить мне способ решить эту проблему? – sathyadev

+0

Рассмотрите возможность редактирования 'upload_max_filesize' в файле' php.ini', чтобы установить достаточный размер ограничения для загрузки файлов. – manix

+0

upload_max_filesize в файле php.ini - 64M .. но я не могу загрузить размер с 3 mb даже .. любые идеи ?? – sathyadev