Я новичок в Laravel. У меня есть форма с функцией загрузки файлов. Как я могу проверить их файл? Я разрешу только файлы Microsoft Word. Вот мой код проверки.
Я просто хочу проверить, вставляют ли они файл слов ms, и если он не будет обработан.
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); } } }
Чтобы проверить тип mime ввода файла в Laravel, вы можете использовать правило mimes
. Не забудьте сопоставить тип mime, обнаруженный с помощью фактического mime файла, который вы предоставляете. Он может различаться на разных серверах.
Например, вы хотите включить добавление и документ Word в форме:
1) в config/mimes.php
добавьте следующие типы mime:
'doc' => array('application/msword', 'application/vnd.ms-office'), 'docx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip'),
2) в ваших $rules
проверки $rules
добавить следующие элементы:
'file' => 'required|max:10000|mimes:doc,docx' //a required, max 10000kb, doc or docx file
Попробуй это?
'file' => 'required|max:10000|mimes:application/vnd.openxmlformats-officedocument.wordprocessingml.document'
Вы можете установить какое-то пользовательское сообщение для ответа, хотя 🙂