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); } } }
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.
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);
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();
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With