Laravel nalaganje datotek s pomočjo Dropzone

V tej objavi bom prikazal kako uporabiti dropzone drag’n’drop skripto za nalaganje datotek v laravel ogrodju in kako potem v samem kontrolerju pohendlati zadeve. Seveda ker gre le za primer, sam ne bom shranil poti do datoteke v bazo kot se to ponavadi počne v praksi, ampak bom datoteko samo naložil v public mapo.

1. Layout (main.blade.php)

Najprej ustvarimo naš layout, kjer vključimo css stile in jquery ter dropzone knjižnici. Seveda bi lahko za ta primer uporabili zgolj en view, ampak moj namen je bil pokazati kako to storimo s partial view-ji.

2. Obrazec (home.blade.php)

V tem pogledu zgolj extendamo naš layout ter dodamo vsebino – @section(‘content’) kjer imamo zgolj obrazec, ki se nato s pomočjo @yield(‘content’) doda v našem main.blade.php layoutu.

 3. Registracija route

Za prikaz vstopne strani sem uporabil klasično routo, ki nam prikaže obrazec oziroma home.blade.php view.

Pri registraciji route za samo metodo, ki pohendla nalaganje sem uporabil implicitni kontroler, kjer prvi argument sprejme pot, drugi pa ime kontrolerja.

4. Kontroler

V samem kontrolerju nato pohendlam par stvari in sicer preverim, če je poslan request ajax, validiram naložene datoteke – maksimalna velikost datoteke je 4 MB. V kolikor gre validacija skozi, mimogrede metoda fails() vrača true ali false, naložimo datoteko v direktorij laravel/public/uploads in v kolikor se uspešno naloži vrnemo JSON odgovor – status 200, v kolikor se kaj zalomi pa vrnemo napako – status 400. Isto storimo tudi, če validacija ne gre skozi, takrat tudi vrnemo JSON odgovor s statusom 400 in napako.

Uspešno nalaganje dveh datotek.
Dropzone Ajax Uploader

Datoteki sta naloženi v direktoriju laravel/public/uploads:

naložene datoteke v laravel mapi