laravel session file upload download
Ovaj vodič obuhvaća Laravel Session, prijenos datoteka, preuzimanje, dozvolu datoteke, Laravel autentifikaciju i autorizaciju, slanje e-pošte itd. S primjerima:
U Obrasci Laravel i pravila za provjeru valjanosti vodič za Laravel Tutorial serija , na primjerima smo učili o različitim elementima oblika.
Dalje u ovom vodiču, također smo razgovarali o tome kako postavljanje, dobivanje, brisanje podataka sesije pod Laravel sesijama i kako slati e-poštu putem Poštanska zamka detaljno.
Za sve smo primjere koristili Laravel verzija 7 .
najbolji besplatni čistač registra 7
Preduvjeti
U našim prethodnim tutorijalima smo to pokrili osnovne značajke Laravela , upravljanje bazama podataka, i rukovanje obrascima , i morate biti upoznati s tim temama za bolje razumijevanje ovog vodiča.
Započnimo!
Što ćete naučiti:
- Prijenos datoteke Laravel
- Laravel Sjednica
- Laravel autentifikacija
- Odobrenje za Laravel
- Slanje e-pošte u Laravel
- Zaključak
Prijenos datoteke Laravel
Prijenos datoteka u Laravel je jednostavan. Programer također može odrediti Laravel dozvole za datoteke kao što su vrste datoteka, ograničenja veličine datoteka koje korisnik može prenijeti itd.
Primjer prijenosa datoteke Laravel
U ovom smo primjeru stvorili jednostavan obrazac s provjerom valjanosti za prijenos datoteka.
Korak 1: Izvedite sljedeću naredbu u naredbenom retku da biste stvorili projekt Laravel s imenom udžbenik za prijenos datoteka .
composer create-project --prefer-dist laravel/laravel:^7.0 file-uploading-tutorial
Korak 2: Dodajte sljedeće dvije rute u rute / web.php datoteka.
Route::get('file/upload','FileUploadController@create')->name('file.create'); Route::post('file/upload','FileUploadController@store')->name('file.store');
Korak 3: Pokrenite sljedeću naredbu u naredbenom retku za stvaranje FileUploadController i izmijenite postojeći kod kako je prikazano u nastavku.
php artisan make: kontroler FileUploadController
validate(('file' => 'required|mimes:doc,docx,xlx,csv,pdf|max:1024')); $file_name = time().'.'.$request->file->extension(); $request->file->move(public_path('file uploads'), $file_name); return back() ->with('success','Successfully uploaded a file!') ->with('file',$file_name); } }
Korak 4: Stvorite datoteku prikaza s imenom create.blade.php i dodajte sljedeći kod:
Laravel File Uploading Tutorial @if (count($errors) > 0) @foreach ($errors->all() as $error) - {{ $error }}
@endforeach
@endif @if ($message = Session::get('success')) × {{ $message }} @endif Laravel File Uploading
@csrf File
Korak 5: Stvorite mapu s imenom prijenos datoteka u javnost mapu. To je mapa u kojoj se pohranjuju prenesene datoteke.
Korak 6: Posjetite sljedeći URL i on će proizvesti izlaz sličan donjem snimku zaslona.
Bilješka : Sljedeći se URL može razlikovati od vašeg.
http: //file-uploading-tutorial.test/file/upload
Korak 7: Sada možete prenijeti važeću datoteku i poslati obrazac. Provjerite je li učitana datoteka pohranjena u prijenos datoteka mapu. Također možete pokušati prenijeti nevaljanu datoteku (datoteka s prekoračenom datotekom nevažeće vrste i / ili veličine) i poslati obrazac za provjeru valjanosti.
U gornjem primjeru korisnik može samo poslati doc , docx , devetnaesti , csv, i pdf datoteke najveće veličine 1024 bajta .
Primjer 1: Učitavanje pdf datoteke veličine manje od 1024 bajta.
Primjer 2: Prijenos datoteke slike (PNG, JPEG, itd.).
Primjer 3: Učitavanje pdf datoteke veličine veće od 1024 bajta.
Laravel Sjednica
DO sjednica je navikao na pohraniti korisničke podatke u više korisničkih zahtjeva . Pomaže pratiti korisnike web stranice . Konfiguracija sesije Laravel može se izvršiti u config / session.php datoteka. Prema zadanim postavkama upravljački program datoteke koristi se za obradu podataka sesije.
Dohvaćanje podataka sesije Laravel
Prvo, morate dobiti instancu sesije kojoj se može pristupiti putem HTTP zahtjeva. Zatim upotrijebite dobiti() metoda za pristup podacima.
$session_data = $request->session()->get('key');
Pohranjivanje podataka u Laravel sesiji
Postoje dva načina za pohranu podataka u sesiji.
# 1) Koristiti staviti() metoda - Ova metoda pohranjuje podatke putem instance zahtjeva.
$request->session()->put('key', 'value');
#dva) Koristeći sjednica pomoćnik - Ova metoda pohranjuje podatke putem globalnog pomagača.
session(('key' => 'value'));
Brisanje podataka sesije Laravel
The zaboravio () metoda koristi se za brisanje određenih podataka iz sesije.
$request->session()->forget(key);
The isprati () metoda koristi se za brisanje svih podataka iz sesije.
Flash podaci pomoću Laravel sesije
The bljesak() metoda se također koristi za pohranu podataka u sesiji, ali dostupna samo za sljedeći HTTP zahtjev.
$request->session()->flash('status', Successful!');
Primjer sesije Laravel
Naučimo kako postaviti, dobiti, i izbrisati podaci sesije pomoću jednostavnog primjera sesije.
Korak 1: Izvedite sljedeću naredbu u naredbenom retku da biste stvorili projekt Laravel s imenom sesija-tutorial .
composer create-project --prefer-dist laravel/laravel:^7.0 session-tutorial
Korak 2: Dodajte sljedeće tri rute u rute / web.php datoteka.
Route::get('session/set','SessionController@store')->name('session.store'); Route::get('session/get','SessionController@index')->name('session.index'); Route::get('session/delete','SessionController@delete')->name('session.delete');
Korak 3: Pokrenite sljedeću naredbu u naredbenom retku za stvaranje SessionController i izmijenite postojeći kod kako je prikazano u nastavku:
php artisan make: kontroler SessionController
session()->has('username')) echo $request->session()->get('username'); else echo 'No session data.'; } public function store(Request $request) { $request->session()->put('username','User A'); echo 'Session data stored.'; } public function delete(Request $request) { $request->session()->forget('username'); echo 'Session data deleted.'; } }
Korak 4: Posjetite sljedeće URL-ove u danom redoslijedu na postavljen , dobiti, i izbrisati podaci sesije.
Bilješka : Sljedeći URL-ovi mogu se razlikovati od vaših.
# 1) Posjetite sljedeći URL na postaviti podatke o sesiji .
http: //session-tutorial.test/session/set
Proizvest će izlaz sličan donjem snimku zaslona.
#dva) Posjetite sljedeći URL na dobiti podatke o sesiji .
http: //session-tutorial.test/session/get
Proizvest će izlaz sličan donjem snimku zaslona.
# 3) Posjetite sljedeći URL na izbriši podatke o sesiji .
http: //session-tutorial.test/session/delete
Proizvest će izlaz sličan donjem snimku zaslona.
# 4) Nakon brisanja podataka sesije, ponovno posjetite sljedeći URL.
http: //session-tutorial.test/session/get
Proizvest će izlaz sličan donjem snimku zaslona.
Laravel autentifikacija
Laravel autentifikacija je jednostavna. Navikao je na identificirati korisnike . Obično se to postiže identificiranje korisničkog imena i lozinke korisnika . Ako su korisničke vjerodajnice identificirane kao valjane, tada se kaže da je korisnik ovjereni korisnik .
The config / auth.php datoteka je konfiguracijska datoteka za provjeru autentičnosti. Autentifikacija Laravel sastoji se od stražari i davatelji usluga .
Straža: Definira način autentifikacije korisnika za svaki zahtjev.
Pružatelji usluga: Definira način na koji se korisnici dohvaćaju iz vaše trajne pohrane.
Dalje, prema potrebi možete definirati i dodatne pružatelje usluga. Međutim, ne mora mijenjati zadanu konfiguraciju provjere autentičnosti.
Imajte na umu da u ovom uputstvu nismo detaljno razgovarali o čuvarima i pružateljima usluga.
Primjer provjere autentičnosti
U ovom smo primjeru stvorili jednostavan sustav autorizacije Laravel 7.
Korak 1: Izvedite sljedeću naredbu u naredbenom retku da biste stvorili projekt Laravel s imenom auth-tutorial .
composer create-project --prefer-dist laravel/laravel:^7.0 auth-tutorial
Korak 2: Povežite svoj projekt s bazom podataka i pokrenite sljedeću naredbu u naredbenom retku za pokretanje zadanih migracija.
php artisan migrate
Korak 3: Pokrenite sljedeću naredbu u naredbenom retku da biste instalirali Laravel UI paket .
composer require laravel/ui
Korak 4: Sljedeći je korak generiranje auth skela s Bootstrap, View, ili Reagirati . Možete trčati jedna od sljedećih naredbi za stvaranje autorskih skela.
Izvedite sljedeću naredbu u naredbenom retku da biste generirali autorizacijsku skelu s Bootstrap .
php artisan ui bootstrap --auth
Izvedite sljedeću naredbu u naredbenom retku da biste generirali autorizacijsku skelu s Pogled .
php artisan ui vue --auth
Izvedite sljedeću naredbu u naredbenom retku da biste generirali autorizacijsku skelu s Reagirati .
php artisan ui react --auth
Korak 5: Izvedite sljedeće dvije naredbe u naredbenom retku za sastavljanje svježe skele instaliranjem npm ovisnosti .
npm install npm run dev
Korak 6: Posjetite sljedeće URL-ove kako biste testirali provjeru autentičnosti stvaranjem novog korisnika (registracijom novog korisnika) i prijavom u sustav. Možete isprobati valjane i nevaljane podatke za testiranje provjere autentičnosti.
Bilješka : Sljedeći URL-ovi mogu se razlikovati od vaših.
Prvo morate registrirati novog korisnika. Posjetite sljedeći URL da biste registrirali novog korisnika i on će proizvesti izlaz sličan donjem snimku zaslona.
http: //auth-tutorial.test/register
Nakon registracije novog korisnika, prijavite se u sustav posjetom sljedećem URL-u i on će stvoriti izlaz sličan donjem snimku zaslona.
http: //auth-tutorial.test/login
Uspješna prijava preusmjerit će korisnika na početna stranica / nadzorna ploča kako je prikazano dolje.
Odobrenje za Laravel
Jednostavno rečeno, autorizacija provjerava je li ovjereni korisnici imaju potrebno dopuštenje za pristup traženim resursima .
Primjer odobrenja
U ovom smo primjeru stvorili jednostavan sustav autorizacije Laravel 7.
Korak 1: Izvedite sljedeću naredbu u naredbenom retku da biste stvorili projekt Laravel s imenom autorizacija-tutorial .
composer create-project --prefer-dist laravel/laravel:^7.0 authorization-tutorial
Korak 2: Povežite svoj projekt s bazom podataka.
Korak 3: Pokrenite sljedeću naredbu u naredbenom retku da biste kreirali add_role_column_to_users_table migracija i izmjena postojećeg koda kao što je prikazano dolje:
php obrtnik make: migracija add_role_column_to_users_table
enum('role', ('admin', 'manager', 'user'))->default('user'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('users', function (Blueprint $table) { // }); } }
Korak 4: Izvedite sljedeću naredbu u naredbenom retku da biste pokrenuli sve migracije.
php artisan migrate
Korak 5: Dodajte uzorke podataka u Korisnici stol koristeći prtljati kako je prikazano dolje:
C:laragonwwwauthorization-tutorial php artisan tinker Psy Shell v0.10.4 (PHP 7.2.19 — cli) by Justin Hileman >>> $user = new AppUser; => AppUser {#3260} >>> $user->name = 'User A'; => 'User A' >>> $user->email = 'admina@user.com'; => 'admina@user.com' >>> $user->password = bcrypt('user123'); => 'y$E5hDEej0Cue1U5AY..tmR.Wd/YCo9LXN0kbqvX1por8Cdfi.NhGv6' >>> $user->role = 'admin'; => 'admin' >>> $user->save(); => true
Korak 6: Pokrenite sljedeću naredbu u naredbenom retku da biste instalirali Laravel UI paket .
composer require laravel/ui
Korak 7: Sljedeći je korak generiranje auth skela s Bootstrap, View, ili Reagirati . Možete trčati jedna od sljedećih naredbi za stvaranje autorskih skela.
Izvedite sljedeću naredbu u naredbenom retku da biste generirali autorizacijsku skelu s Bootstrap .
php artisan ui bootstrap --auth
Izvedite sljedeću naredbu u naredbenom retku da biste generirali autorizacijsku skelu s Pogled .
php artisan ui vue --auth
Izvedite sljedeću naredbu u naredbenom retku da biste generirali autorizacijsku skelu s Reagirati .
php artisan ui react --auth
Korak 8: Izvedite sljedeće dvije naredbe u naredbenom retku za sastavljanje svježe skele instaliranjem npm ovisnosti .
npm install npm run dev
9. korak: Otvori AuthServiceProvider.php dosje na Aplikacija / davatelji usluga i izmijenite postojeći kod kako je prikazano u nastavku:
registerPolicies(); Gate::define('isAdmin', function($user) { return $user->role == 'admin'; }); Gate::define('isManager', function($user) { return $user->role == 'manager'; }); Gate::define('isUser', function($user) { return $user->role == 'user'; }); } }
10. korak: Izmijenite postojeći kod u home.oštrica.php datoteka kao što je prikazano dolje:
@extends('layouts.app') @section('content') {{ __('Dashboard') }} @if (session('status')) {{ session('status') }} @endif @can('isAdmin') I am an admin. @elsecan('isManager') I am a manager. @else I am a user. @endcan @endsection
11. korak: Posjetite sljedeći URL i on će proizvesti izlaz sličan donjem snimku zaslona. Zatim se prijavite u sistem kao administrator, upravitelj i korisnik jedan po jedan.
Bilješka : Sljedeći URL-ovi mogu se razlikovati od vaših.
http: //authorization-tutorial.test/login
- Administratorska prijava
Ako ste prijavljeni kao admin , tada će izlaz biti sličan sljedećem snimku zaslona.
- Prijava upravitelja
Ako ste prijavljeni kao menadžer , tada će izlaz biti sličan sljedećem snimku zaslona.
- Prijava korisnika
Ako ste prijavljeni kao korisnik , tada će izlaz biti sličan sljedećem snimku zaslona.
Slanje e-pošte u Laravel
Što je Mailtrap
Dostupno je nekoliko besplatnih mrežnih alata za testiranje e-pošte u Laravelu i Poštanska zamka je jedan takav alat. Mailtrap koristi lažni SMTP poslužitelj za testiranje e-pošte. Prihvaća e-poštu lokalnog domaćina koja programeru ili ispitivaču omogućuje testiranje načina na koji će se e-adrese dijeliti prije slanja u stvarne sandučiće.
Primjer slanja e-pošte
Napravimo jednostavan primjer pomoću Poštanska zamka .
Korak 1: Izvedite sljedeću naredbu u naredbenom retku da biste stvorili projekt Laravel s imenom e-mail tutorial .
composer create-project --prefer-dist laravel/laravel:^7.0 email-tutorial
Korak 2: Posjetiti URL i stvorite novi Mailtrap račun ili se prijavite na Mailtrap račun ako ga već imate.
Korak 3: Nakon prijave na račun Mailtrap,
# 1) Kliknite na Demo poštanska pošta .
#dva) Identificirajte Korisničko ime i Zaporka pod, ispod SMTP . Ovo korisničko ime i lozinka su jedinstveni, a mi ćemo ih koristiti u sljedećem koraku.
Bilješka: Posjetiti URL da biste saznali više o Mailtrapu.
Korak 4: Otvori . env datoteku i unesite Poštanska zamka korisničko ime i lozinku.
MAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME= enter your Mailtrap username here MAIL_PASSWORD= enter your Mailtrap password here MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS=null MAIL_FROM_NAME='${APP_NAME}'
Korak 5: Dodajte sljedeće dvije rute u rute / web.php datoteka.
Route::get('/contact', 'ContactController@contact')->name('contact'); Route::post('/contact', 'ContactController@sendContactForm')->name('contact.send');
Korak 6: Pokrenite sljedeću naredbu u naredbenom retku za stvaranje FileUploadController i izmijenite postojeći kod kako je prikazano u nastavku.
php artisan make: kontroler ContactController
validate($request, ( 'name' => 'required', 'email' => 'required|email', 'subject' => 'required', 'message' => 'required', )); $data = array( 'name' => $request->name, 'email' => $request->email, 'subject' => $request->subject, 'message' => $request->message, ); Mail::to('user@test.com')->send(new ContactMail($data)); return redirect()->back()->with('success', 'Your message was submitted successfully. Thank you!'); } }
Korak 7: Pokrenite sljedeću naredbu u naredbenom retku za stvaranje KontaktMail razred. Ova naredba će stvoriti datoteku s imenom ContactMail.php u App / Mail imenik.
php artisan make:mail ContactMail
Korak 8: Izmijenite postojeći kod u ContactMail.php datoteku kao što je prikazano u nastavku.
data = $data; } /** * Build the message. * * @return $this */ public function build() { return $this->from($this->data('email')) ->subject('Contact Form') ->view('contact-template')->with('data', $this->data); } }
9. korak: Stvorite sljedeće datoteke prikaza i dodajte kodove.
# 1) Stvorite kontakt.blade.php datoteku i dodajte sljedeći kod.
Contact Us @if (count($errors) > 0) @foreach ($errors->all() as $error) - {{ $error }}
@endforeach
@endif @if ($message = Session::get('success')) × {{ $message }} @endif Contact Us
@csrf Name Email Subject Message {{ old('message') }} Send
#dva) Stvorite kontakt-predložak.blade.php datoteku i dodajte sljedeći kod.
koliko se c razlikuje od c ++-a
Name: {{ $data('name') }}
Subject: {{ $data('subject') }}
Message: {{ $data('message') }}
10. korak: Posjetite sljedeći URL i on će proizvesti izlaz sličan donjem snimku zaslona.
Bilješka : Sljedeći se URL može razlikovati od vašeg.
http: //email-tutorial.test/contact
11. korak: Ispunite obrazac i pošaljite.
Korak 12: Sada posjetite svoj Poštanska zamka račun i provjerite pristiglu poštu. U pristigloj pošti vidjet ćete novu poruku sličnu snimci zaslona u nastavku.
Zaključak
Laravel prijenos datoteka je jednostavan, a programer također može postaviti dozvole za Laravel datoteku. Laravel pruža jednostavan način postavljanja, dobivanja i brisanja podataka sesije. Autentifikacija Laravel pomaže identificirati korisnike dok autorizacija Laravel provjerava imaju li autorizirani korisnici dozvolu za pristup traženim resursima.
Alate poput Mailtrapa možemo koristiti za testiranje e-pošte prije slanja u stvarne sandučiće.
Nadamo se da vam je ovaj vodič bio koristan! Nadam se da ćemo se opet vidjeti u sljedećem vodiču gdje ćemo razgovarati Kovačnica Laravel i zbirke .
Sretno učenje!
<< PREV Tutorial | SLJEDEĆA Vodič >>
Preporučena literatura
- PHP Laravel Vodič za početnike: Što je Laravel Framework
- Zbirka Laravel i udžbenik Laravel Forge
- Baza podataka Laravel, migracije, rječit ORM i Tinker
- Obrasci Laravel i pravila provjere valjanosti s primjerom
- Dopuštenja za pristup Unix datotekama: Unix Chmod, Chown i Chgrp
- Dopuštenja za Unix: Dozvole za datoteke u Unixu s primjerima
- Kako prenijeti datoteku pomoću Selenium Webdriver - 3 metode
- Manipulacija datotekama u Unixu: Pregled Unix datotečnog sustava