Laravel Upload Di File Di Convalida

Sono nuovo di Laravel. Ho un form con un File la funzione di upload su di esso. Come posso convalidare I loro file? Mi sarà consentito solo i file di Microsoft Word. Ecco il mio codice di convalida.

Voglio solo verificare se si inserisce un file di ms word e se non non sarà processato.

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);
        }
    }
}
InformationsquelleAutor Yassi | 2014-05-13



2 Replies
  1. 49

    Per convalidare il tipo mime del file di input in Laravel è possibile utilizzare il mimes regola. Ricordate di abbinare il tipo mime rilevato con l’attuale mime del file che si forniscono. Esso può variare su diversi server.

    Per esempio, si desidera abilitare l’aggiunta e il documento di word in forma:

    1) in config/mimes.php aggiungere il seguente tipo mime:

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

    2) convalida $rules aggiungere i seguenti elementi:

        'file' => 'required|max:10000|mimes:doc,docx' //a required, max 10000kb, doc or docx file
    • sì, creare e filll analogamente al resto del file di configurazione come un array di chiavi. Come per le chiavi – che è quello che ho inserito nella mia risposta 🙂
    • Ciao Grazie! Ho fatto quello che hai detto e seguire questo github.com/jasonlewis/laravel.com/blob/master/application/… Ma ho ancora Errore:
    • LogicException in Grado di indovinare il tipo mime come non guessers sono disponibili (è attiva l’php_fileinfo estensione?)
    • beh, sembra che avete il vostro server underconfigurted, ti mancano alcune estensioni necessari per il rilevamento del tipo mime ? Qual è il tuo server HTTP stack e sistema operativo in uso? A proposito, se la mia risposta ha risolto la tua domanda iniziale, la prego di accettare come risposta ufficiale in modo che altri possano beneficiare anche quando devono affrontare problemi simili. Evviva!
    • Ciao! Sono riuscito a farlo funzionare. Grazie! Ho solo dimenticato di attivare alcuni estensione nel mio wamp server. Grazie! Vi do un plus 🙂
  2. 2

    Provare questo?

    'file' => 'required|max:10000|mimes:application/vnd.openxmlformats-officedocument.wordprocessingml.document'

    È possibile impostare alcuni di messaggio personalizzato per la risposta comunque 🙂

Lascia un commento