Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel File Upload Validation

I'm new to Laravel. I have a form with a File upload function on it. How can I validate their file? I will only allowed Microsoft Word files. Here's my validation code.

I just want check if they insert a ms word file and if not it will not be processed.

public function store() {   // Validate     $rules = array(         'pda'                         => 'required|unique:forms',         'controlnum'                  => 'required|unique:forms',         'date'                        => 'required',         'churchname'                  => 'required',         'title'                       => 'required',         'pastorname'                  => 'required',         'contactnum'                  => 'required',         'address'                     => 'required',         'state'                       => 'required',         'region'                      => 'required',         'area'                        => 'required',         'city'                        => 'required',         'zipcode'                     => 'required|numeric|max:9999',         'tgjteachertraining'          => 'required',         'localcontact'                => 'required',         'tgjdatestart'                => 'required',         'tgjdateend'                  => 'required',         'tgjcourse'                   => 'required|numeric',         'childrengraduated'           => 'required|numeric|max:450',         'childrenacceptjesus'         => 'required|numeric',         'howmanycomitted'             => 'required|numeric',         'recievedbibles'              => 'required|numeric',         'descgradevent'               => 'required',         'whatwillyoudo'               => 'required',         'pastortest'                  => 'required',         'teachertest'                 => 'required',         'childrentest'                => 'required',         'file'                        => 'required|max:10000',     );      $validator = Validator::make(Input::all(), $rules);      // process the form     if ($validator->fails()) {         return Redirect::to('forms/create')->withErrors($validator);     } else {         // store         $forms = new Forms;         $forms->pda                         = Input::get('pda');         $forms->controlnum              = Input::get('controlnum');         $forms->date                = Input::get('date');         $forms->churchname                  = ucwords(Input::get('churchname'));         $forms->title                       = ucwords(Input::get('title'));         $forms->pastorname                  = ucwords(Input::get('pastorname'));         $forms->address                     = Input::get('address');         $forms->contactnum                  = Input::get('contactnum');         $forms->state                       = Input::get('state2');         $forms->region                      = Input::get('region2');         $forms->area                        = Input::get('area2');         $forms->citytown                    = Input::get('city2');         $forms->zipcode                     = Input::get('zipcode');         $forms->tgjteachertraining          = Input::get('tgjteachertraining');         $forms->localcontact            = ucwords(Input::get('localcontact'));         $forms->tgjdatestart            = Input::get('tgjdatestart');         $forms->tgjdateend              = Input::get('tgjdateend');         $forms->tgjcourse           = Input::get('tgjcourse');         $forms->childrengraduated           = Input::get('childrengraduated');         $forms->childrenacceptjesus     = Input::get('childrenacceptjesus');         $forms->howmanycomitted         = Input::get('howmanycomitted');         $forms->recievedbibles          = Input::get('recievedbibles');         $forms->descgradevent           = Input::get('descgradevent');         $forms->whatwillyoudo           = Input::get('whatwillyoudo');         $forms->pastortest          = Input::get('pastortest');         $forms->teachertest             = Input::get('teachertest');         $forms->childrentest            = Input::get('childrentest');         $file                   = Input::file('file');         $filename                   = $file->getClientOriginalName();          $destinationPath                = 'uploads/'.Input::get('pda');         $uploadSuccess              = Input::file('file')->move($destinationPath, $filename);         $forms->docurl              = 'uploads/'.Input::get('pda').'/'.$filename;         if( $uploadSuccess ) {         $forms->save();         //Session::flash('message', 'Successfully submitted form!');         return Redirect::to('forms/create');          Session::flash('message', 'Successfully submitted form!');          }          else {         return Response::json('error', 400);         }     } } 
like image 240
Yassi Avatar asked May 13 '14 07:05

Yassi


People also ask

How do I validate a csv file in laravel?

you can use required|mimes:csv,txt for validation csv file. Although is too late, validating the txt mime will allow ANY txt files, even any . sql file.

How do I view uploaded files in laravel?

6 Answers. Show activity on this post. Check below code this is working code. $file = $request->file('Picture'); $destinationPath = 'public/img/'; $originalFile = $file->getClientOriginalName(); $file->move($destinationPath, $originalFile);

How can I upload my file name in laravel 8?

The hashName method is exactly what Laravel calls in the store method. $request->image->hashName(); You will get the same name that Laravel generates when it creates the file name during the store method. $path = $request->image->getClientOriginalName();


1 Answers

To validate mime type of a file input in Laravel you can use the mimes rule. Remember to match the mime type detected with the actual mime of file you provide. It may vary on different servers.

For example, you want to enable adding and word document in you form:

1) in config/mimes.php add the below mime types:

    'doc'  => array('application/msword', 'application/vnd.ms-office'),     'docx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip'),  

2) in your validation $rules add the following elements:

    'file' => 'required|max:10000|mimes:doc,docx' //a required, max 10000kb, doc or docx file 
like image 165
Gadoma Avatar answered Sep 19 '22 01:09

Gadoma