Articles

Tiedostojen latausten käsittely Laravelissa – CodeSource.io

lähes kaikki hakemukset liittyvät jonkinlaiseen tiedostojen lataukseen: profiilikuva, KYC-varmennukseen tarkoitettu asiakirja, CV: tä sisältävä asiakirja jne.

siksi on tärkeää ymmärtää, miten käsitellä tiedostoja Laravelissa.

tässä opetusohjelmassa aiomme rakentaa yksinkertaisen käyttäjäprofiililomakkeen, johon käyttäjän tulee täyttää tietonsa ja näihin yksityiskohtiin kuuluu profiilikuvan lähettäminen.

tämän opetusohjelman lopussa sinun pitäisi pystyä käsittelemään tiedostojen latauksia, käsittelemään tiedostojen lähetyksen validointia ja tietää, mitä tehdä, kun tiedostoa ei saada ladattua onnistuneesti.

Asetukset

jotta pääset alkuun, Laravel on asennettava järjestelmääsi. Jos olet jo asentanut Laravelin, voit ohittaa tämän vaiheen.

neuvoisin asentamaan Laravelin globaalisti. Varsinkin jos aiot käyttää sitä usein. Voit tehdä sen suorittamalla seuraavan komennon päätteessä.

composer global require laravel/installer

kun tämä on valmis, voimme aloittaa uuden Laravel-projektin luomisen tätä opetusohjelmaa varten.

laravel new profile-form

yllä olevan komennon suorittaminen luo nykyiseen hakemistoon uuden Laravel-projektin nimeltä profile-form.

palvele sovellusta ajamalla seuraavat:

cd profile-formphp artisan serve

siirry kohtaan , josta löydät sovelluksesi, joka näyttää Laravelin oletussivun.

Tietokantasiirtymän kirjoittaminen

meidän on luotava käyttäjätaulukko, johon tallennetaan käyttäjän tiedot.Laravelin alukset, joiden Siirtymä käyttäjätaulukossa löytyy kohdasta database\migrations14_10_12_000000_create_users_table.php. Muokkaa tiedosto näyttämään tältä:

tässä, olemme muuttaneet oletus Laravel muuttoliike käyttäjät taulukko sisältää kentän valokuva, joka tallentaa URL käyttäjien valokuva.

env-tiedosto sisältää oikeat tietokannan tiedot. Suorita sitten migraatiot ajamalla seuraava komento:

php artisan migrate

Päivitä Käyttäjämalli vastaamaan kuvakentän lisäystä. Lisää kuva $fillable: ään, jotta laravel voi täyttää sen automaattisesti käyttäjän luodessa ja päivittäessä.

// App\User.phpprotected $fillable = ;

kun tämä on tehty, voidaan edetä rakentamaan profiilimuodon etupuoli.

Building the Frontend

We will need to create an authentication system which will allow the user to register and login in the application.

luo resursseissa/näkymissä uusi tiedosto nimeltään register.blade.php. Lisää seuraava äskettäin luotuun tiedostoon.

käytämme Bootstrapia muotoiluun, joten se on lisättävä sivun yläosaan. Olemme tehneet kaikki tarvittavat kentät, joten käyttäjä ei voi lähettää lomaketta täyttämättä kaikkia kenttiä.

meille tässä erityisen tärkeä kenttä on tiedostosyöttökenttä <input type="file" päivitä web.php liittääkseen reitin rekisterisivulle

// web.php...Route::get('/register', function () { return view('register');});

menee näyttää rekisterisivun, joka sisältää ilmoittautumislomakkeelle tyypilliset kentät.

Tiedostonsiirtolomake

on määriteltävä tuettavien tiedostojen tyyppi. Koska haluamme vain kuvatiedostoja, meidän täytyy määrittää syöttöelementissä, että haluamme vain kuvatiedostoja.

Modfiy the input:type="file" to accept only image files by adding the accept attribute with a value of image/* to the input tag.

valokuva-osion pitäisi nyt tykätä:

vaikka lomake näyttää asetetulta lähettämään kuvia taustapuolelle, se ei voi tehdä sitä vielä. Meidän on kerrottava lomakkeelle, että sen on lähetettävä toisenlaista lomakedataa taustajärjestelmään, tässä tapauksessa binääridataan.

teemme tämän lisäämällä enctype – attribuutin muotoelementtiin ja asettamalla sen arvoksi multipart/form-data.

avauslomakkeen tunnisteen tulee näyttää:

<form action="#" class="col-md-5" enctype="multipart/form-data">

seuraavaksi täytyy kirjoittaa ohjain, jotta lähetys hoituu.

written the Controller

our backend should be able to handle the validation, storing and redirecting/authentication the user.

Laravelin alukset, joiden rekisteritunnus on app\Http\Controllers\Auth\RegisterController.php.

validointi

rekisterinpitäjän validator menetelmän tehtävänä on kenttien validointi. Päivitetään se vastaamaan sitä, mitä oikeasti haluamme.

muuta validaattorimenetelmä Registercontrollerissa.php vahvistaa kaikki kentät.

nimikentän tulee olla pakollinen kenttä ja merkkijono, joten validointisäännöt. Sama koskee sähköpostia ja salasanaa.

salasanakenttä on vahvistettava. Vuonna frontend, lisäsimme kentän password_confirmation. Tähän salasanakenttää verrataan. Lopuksi kuvakenttä.

tämä kenttä on pakollinen rekisteröitymisen yhteydessä. Sitä tarvitaan, koska tietokantamuutossamme teimme sen niin. Jos olisimme asettaneet sen nollattavaksi, meidän ei tarvitsisi asettaa vahvistusta vaadittavaksi.

Laravelissa on myös kätevä validointisääntö, image, jota käytetään kuvatiedostojen validointiin (tiedostot, joissa on jompikumpi seuraavista laajennuksista: jpeg, png, bmp, gif tai svg).

joitakin muita varmennuksia, jotka haluat ehkä tehdä tiedostoille, ovat

  • varmistaen, ettei tiedostokoko ole suurempi tai pienempi kuin tietty määrä. Tämä sääntö voidaan lisätä max:500 tai min:500 tarpeen mukaan. On huomattava, että tiedostokoko tässä on kilotavuina
  • tarkistaen Kuvan mitat. Tämä voidaan tehdä lisäämällä seuraava joukko sääntöjä 'dimensions:min_width=100,min_height=200'.

tallentaminen

seuraava vaihe on kuvan tallentaminen. Luomme uuden toiminnon käsittelemään tätä toimintoa.

on useita paikkoja, joissa tiedostoja voi tallentaa sovellukseen: ne voisi tallentaa s3-ämpäriin, google Driveen tai vaikka sovelluspalvelimeen.

Laravelin mukana tulee Tuki tiedostojen tallentamiseen näihin paikkoihin. Yksinkertaisuuden vuoksi Tallennamme kuvatiedoston sovellukseen.

Laravel Request class, Illuminate\Http\Request tarjoaa tuen tiedostojen käsittelyyn kättelyssä. Ladatun tiedoston voi tallentaa kautta $request→file(<inputName>)→store(<folderToBeStored>). Meidän tapauksessamme, voisimme käyttää:

$request->file('photo')->store('profile')

tämä tallentaa tiedoston storage \app\profile – kansioon. Tiedosto tallennetaan satunnaisella nimellä, ja tiedoston url palautetaan.

jos haluamme antaa kuvalle mukautetun nimen, koska sitä säilytetään, on käytettävä storeAs – menetelmää.

käyttämällä storeAs – menetelmää tiedostopääte näyttää

$request→file(<inputName>)→storeAs(<folderToBeStored>, <customName.fileExtension>)

tiedostopääte on tärkeä, ja laravel tarjoaa yksinkertaisia tapoja saada ladatun tiedoston tiedostopääte clientExtension – menetelmällä.

sen voi saada kuten alla on esitetty

$request->file('photo')->extension()

tällä menetelmällä voidaan tallentaa käyttäjän kuva käyttäjän nimen perusteella.

$fileName = $request->get('name') . '.' . $request->file('photo')->extension(); $request->file('photo')->storeAs('profile', $fileName);

meidän tapauksessamme pärjäämme satunnaisilla nimillä, jotka laravel tallentaa tiedostomme.

  • jotta tiedostosi olisi julkisesti saatavilla, se on tallennettava storage/app/public – kansioon.
  • muiden kansioiden tiedostot eivät ole julkisesti saatavilla

luodaan funktio, joka hoitaa tehtävän kuvien tallentamisesta tallennustilaan.

validaattorifunktion alle lisätään seuraava

storeImage funktio tallentaa kuvan storage/app/public/profile – kansioon ja palauttaa URL-osoitteen tiedoston tallennuspaikkaan.

Putting it all together

koska lisäämme lisää tehtävää, meidän täytyy ohittaa Laravelin meille tarjoama oletusrekisterimenetelmä.

Laravelissa on ominaisuus käyttäjien rekisteröimiseksi ja se löytyy kohdasta Illuminate\Foundation\Auth\RegistersUsers.php.

Päivitä rekisterinpitäjä sisältämään seuraavat tiedot:

kuten yllä näkyy, luo-funktio tekee käyttäjän luomisen sille lähetettyjen tietojen perusteella.

rekisterifunktiossa kaikki tapahtuu. Validointi suoritetaan ensin ennen mitään muuta asiaa.

jos validointi hyväksytään, Tallennamme kuvan. Kun tämä on tehty, luodaan käyttäjä syöttämällä kaikki tarvittava data array, $data.

jos kaikki tapahtuu onnistuneesti, autentikoimme käyttäjän ja ohjaamme kotisivulle.

näytetään ladattua kuvaa

kotisivulla näytetään kaikki käyttäjän tiedot. Ensin luodaan sille reitti ja ohjain.

suorita päätteessä koodi Homecontrollerin luomiseksi.

php artisan make:controller HomeController

mene vastaperustettuun HomeController ja lisää luokkaan seuraavat menetelmät

konstruktorissa määrittelemme, että käytämme auth-väliohjelmistoa. Mitä tämä väliohjelmisto tekee on, että se sallii vain valtuutetut käyttäjät voivat käyttää toimintoja määritelty luokassa.

käyttäjä voi siis tulla tänne vain, jos hänet on autentikoitu. Jos käyttäjä on tunnistamaton, hänet ohjataan kirjautumissivulle.

näyttelytoiminto hoitaa kotisivun näyttämisen. Siirrämme todennetun käyttäjän myös näköalapaikalle. Lisätietoja tästä on Laravelin dokumentaatiossa.

Päivitä reitit-tiedosto sisältämään kotireitin.

// web.php...Route::get('/home', '[email protected]')->name('home');

luo vihdoin koti.blade.php-tiedosto resources/views – hakemistossa.

lisää kotiin seuraavablade.php:

katso-tiedostossa on pääsy user tietoihin, jotka on siirretty rekisterinpitäjältä.

käytämme tällä hetkellä paikkamerkintäkuvaa näyttääksemme käyttäjän kuvan, koska Kuva ei ole tällä hetkellä käytössämme.

on luotava symbolinen linkki public/storagestorage/app/public – kansiosta Laraveliin, mikä tekee tämän helpoksi antamalla artesaanikomennon:

php artisan storage:link

kun olet tehnyt sen, Päivitä kuvan tunniste näyttämään profiilikuva.

<img src="https://codesource.io/handling-file-uploads-in-laravel/amp/{{asset('storage/'.$user->photo)}}" class="card-img-top" alt="...">

Congrats!!! Olet oppinut tallentamaan kuvia laravelissa.

johtopäätös

lähes kaikki hakemukset vaativat tiedostojen tallentamista tavalla tai toisella. Seuraavat edellä opas, sinun pitäisi pystyä tallentaa kuvia ja muita tiedostoja paikalliseen varastointiin.Kaikki tässä käytetty koodi löytyy täältä GitHubista.