laravel session file upload download
Denna handledning täcker Laravel Session, filöverföring, nedladdning, filbehörighet, Laravel-autentisering och auktorisering, skicka e-post etc. med exempel:
I Laravel blanketter och valideringsregler handledning av Laravel Handledningsserie , vi lärde oss om olika formelement med exempel.
Vidare i denna handledning har vi också diskuterat hur man gör det ställa in, hämta, ta bort sessionsdata under Laravel-sessioner och hur man skickar e-post via Mailtrap i detalj.
För alla exemplen har vi använt Laravel version 7 .
hur man öppnar bin-filer på Windows 10
Förutsättningar
I våra tidigare tutorials har vi täckt grundläggande funktioner i Laravel , databashantering, och formulärhantering , och du måste känna till dessa ämnen för att få en bättre förståelse för denna handledning.
Låt oss börja!
Vad du kommer att lära dig:
- Laravel filöverföring
- Laravelsession
- Laravel-autentisering
- Laravel Auktorisering
- Skicka e-post i Laravel
- Slutsats
Laravel filöverföring
Det är enkelt att ladda upp filer i Laravel. Utvecklaren kan också ange Laravel filbehörigheter såsom filtyper, storleksgränser för de filer som kan laddas upp av användaren etc.
Laravel Exempel på filöverföring
I det här exemplet har vi skapat ett enkelt formulär med validering för att ladda upp filer.
Steg 1: Kör följande kommando i kommandotolken för att skapa ett Laravel-projekt med namnet fil-uppladdning-handledning .
composer create-project --prefer-dist laravel/laravel:^7.0 file-uploading-tutorial
Steg 2: Lägg till följande två rutter till rutter / web.php fil.
Route::get('file/upload','FileUploadController@create')->name('file.create'); Route::post('file/upload','FileUploadController@store')->name('file.store');
Steg 3: Kör följande kommando i kommandotolken för att skapa FileUploadController och ändra den befintliga koden enligt nedan.
php artisan make: controller 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); } }
Steg 4: Skapa en vyfil med namnet create.blade.php och lägg till följande 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
Steg 5: Skapa en mapp med namnet filöverföringar i offentlig mapp. Det är mappen där uppladdade filer lagras.
Steg 6: Besök följande URL och den producerar en utdata som liknar skärmdumpen nedan.
Notera : Följande URL kan skilja sig från din.
http: //file-uploading-tutorial.test/file/upload
Steg 7: Nu kan du ladda upp en giltig fil och skicka in formuläret. Kontrollera att den uppladdade filen är lagrad i filöverföringar mapp. Du kan också försöka ladda upp en ogiltig fil (fil med en ogiltig filtyp och / eller storlek överskrider filen) och skicka in formuläret för att kontrollera valideringen.
I exemplet ovan får användaren bara skicka dok , docx , nittonde , csv, och pdf filer med en maximal storlek på 1024 byte .
Exempel 1: Ladda upp en pdf-fil som är mindre än 1024 byte.
Exempel 2: Ladda upp en bildfil (PNG, JPEG, etc.).
Exempel 3: Ladda upp en pdf-fil som är mer än 1024 byte stor.
Laravelsession
TILL session är van vid lagra användardata över flera användarförfrågningar . Det hjälper till hålla koll på webbplatsens användare . Laravelsessionskonfiguration kan göras i config / session.php fil. Som standard är fildrivrutin används för att hantera sessionsdata.
Hämtar Laravels sessionsdata
Först måste du få en instans av en session som kan nås via en HTTP-begäran. Använd sedan skaffa sig() metod för att komma åt data.
$session_data = $request->session()->get('key');
Lagring av data i Laravel Session
Det finns två sätt att lagra data i en session.
# 1) Använda sätta() metod - Den här metoden lagrar data via en begäraninstans.
$request->session()->put('key', 'value');
#två) Använder sig av session helper - Den här metoden lagrar data via den globala hjälpen.
session(('key' => 'value'));
Ta bort Laravels sessionsdata
De glömde() metoden används för att radera specifik data från sessionen.
$request->session()->forget(key);
De spola() metoden används för att radera all data från sessionen.
Flash-data med hjälp av Laravel Session
De blixt() metoden används också för att lagra data i en session men endast tillgänglig för nästa HTTP-begäran.
$request->session()->flash('status', Successful!');
Laravelsessionsexempel
Låt oss lära oss hur ställa in, få, och radera sessiondata med hjälp av ett enkelt sessionsexempel.
Steg 1: Kör följande kommando i kommandotolken för att skapa ett Laravel-projekt med namnet session-tutorial .
composer create-project --prefer-dist laravel/laravel:^7.0 session-tutorial
Steg 2: Lägg till följande tre rutter i rutter / web.php fil.
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');
Steg 3: Kör följande kommando i kommandotolken för att skapa SessionController och ändra den befintliga koden enligt nedan:
php artisan make: controller 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.'; } }
Steg 4: Besök följande webbadresser i den angivna ordningen till uppsättning , skaffa sig, och radera sessionsdata.
Notera : Följande webbadresser kan skilja sig från din.
# 1) Besök följande URL till ställa in sessionsdata .
http: //session-tutorial.test/session/set
Det kommer att producera en utdata som liknar skärmdumpen nedan.
#två) Besök följande URL till få sessionsdata .
http: //session-tutorial.test/session/get
Det kommer att producera en utdata som liknar skärmdumpen nedan.
# 3) Besök följande URL till ta bort sessionsdata .
http: //session-tutorial.test/session/delete
Det kommer att producera en utdata som liknar skärmdumpen nedan.
# 4) Efter att ha tagit bort sessionsdata, gå tillbaka till följande URL.
http: //session-tutorial.test/session/get
Det kommer att producera en utdata som liknar skärmdumpen nedan.
Laravel-autentisering
Laravel-autentisering är enkelt. Det är van vid identifiera användare . Vanligtvis uppnås det genom identifiera användarnamn och lösenord för användaren . Om användaruppgifterna identifieras som giltiga sägs användaren vara en autentiserad användare .
De config / auth.php filen är konfigurationsfilen för autentisering. Laravel-autentisering består av vakter och leverantörer .
Skydd: Den definierar hur användare autentiseras för varje begäran.
Leverantörer: Det definierar hur användare hämtas från din ihållande lagring.
Vidare kan du också definiera ytterligare leverantörer efter behov. Det behöver dock inte ändra standardautentiseringskonfigurationen.
Vänligen notera att vi har inte diskuterat vakter och leverantörer i detalj i denna handledning.
Autentiseringsexempel
I det här exemplet har vi skapat ett enkelt Laravel 7 auth-system.
Steg 1: Kör följande kommando i kommandotolken för att skapa ett Laravel-projekt med namnet auth-tutorial .
composer create-project --prefer-dist laravel/laravel:^7.0 auth-tutorial
Steg 2: Anslut ditt projekt till databasen och kör följande kommando i kommandotolken för att köra standardmigreringar.
php artisan migrate
Steg 3: Kör följande kommando i kommandotolken för att installera Laravel UI-paket .
composer require laravel/ui
Steg 4: Nästa steg är att generera auth byggnadsställningar med Bootstrap, Visa, eller Reagera . Du kan springa något av följande kommandon för att skapa autentiska byggnadsställningar.
Kör följande kommando i kommandotolken för att skapa autentiska byggnadsställningar med Bootstrap .
php artisan ui bootstrap --auth
Kör följande kommando i kommandotolken för att skapa autentiska byggnadsställningar med Se .
php artisan ui vue --auth
Kör följande kommando i kommandotolken för att skapa autentiska byggnadsställningar med Reagera .
php artisan ui react --auth
Steg 5: Kör följande två kommandon i kommandotolken för att kompilera den nya byggnadsställningen genom att installera npm-beroenden .
npm install npm run dev
Steg 6: Besök följande webbadresser för att testa autentisering genom att skapa en ny användare (registrera en ny användare) och logga in på systemet. Du kan prova både giltiga och ogiltiga data för att testa autentisering.
Notera : Följande webbadresser kan skilja sig från din.
Först måste du registrera en ny användare. Besök följande URL för att registrera en ny användare, och den kommer att producera en utdata som liknar nedanstående skärmdump.
http: //auth-tutorial.test/register
Efter att ha registrerat en ny användare, logga in på systemet genom att besöka följande URL och det kommer att producera en utdata som liknar nedanstående skärmdump.
http: //auth-tutorial.test/login
öppna .bin-filfönster 10
En lyckad inloggning omdirigerar användaren till hemsida / instrumentpanel enligt nedanstående.
Laravel Auktorisering
I enkla termer, tillstånd verifierar om autentiserade användare har nödvändig behörighet för åtkomst till de begärda resurserna .
Auktorisationsexempel
I det här exemplet har vi skapat ett enkelt Laravel 7-auktoriseringssystem.
Steg 1: Kör följande kommando i kommandotolken för att skapa ett Laravel-projekt med namnet auktoriseringshandledning .
composer create-project --prefer-dist laravel/laravel:^7.0 authorization-tutorial
Steg 2: Anslut ditt projekt till databasen.
Steg 3: Kör följande kommando i kommandotolken för att skapa add_role_column_to_users_table migrera och ändra den befintliga koden enligt nedan:
php artisan make: migration 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) { // }); } }
Steg 4: Kör följande kommando i kommandotolken för att köra alla migreringar.
php artisan migrate
Steg 5: Lägg till exempeldata till Användare tabell med knåpa enligt nedanstående:
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
Steg 6: Kör följande kommando i kommandotolken för att installera Laravel UI-paket .
composer require laravel/ui
Steg 7: Nästa steg är att generera auth byggnadsställningar med Bootstrap, Visa, eller Reagera . Du kan springa något av följande kommandon för att skapa autentiska byggnadsställningar.
Kör följande kommando i kommandotolken för att skapa autentiska byggnadsställningar med Bootstrap .
php artisan ui bootstrap --auth
Kör följande kommando i kommandotolken för att skapa autentiska byggnadsställningar med Se .
php artisan ui vue --auth
Kör följande kommando i kommandotolken för att skapa autentiska byggnadsställningar med Reagera .
php artisan ui react --auth
Steg 8: Kör följande två kommandon i kommandotolken för att kompilera den nya byggnadsställningen genom att installera npm-beroenden .
npm install npm run dev
Steg 9: Öppna AuthServiceProvider.php arkivera på App / leverantörer och ändra den befintliga koden enligt nedan:
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'; }); } }
Steg 10: Ändra den befintliga koden i home.blade.php fil som visas nedan:
@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
Steg 11: Besök följande URL och den producerar en utdata som liknar skärmdumpen nedan. Logga sedan in i systemet som en administratör, en chef och en användare en åt gången.
Notera : Följande webbadresser kan skilja sig från din.
http: //authorization-tutorial.test/login
- Administratörsinloggning
Om du är inloggad som en administration , kommer utdata att likna följande skärmdump.
- Managerinloggning
Om du är inloggad som en chef , kommer utdata att likna följande skärmdump.
- Användarnamn
Om du är inloggad som en användare , kommer utdata att likna följande skärmdump.
Skicka e-post i Laravel
Vad är Mailtrap
Det finns flera gratis onlineverktyg tillgängliga för att testa e-postmeddelanden i Laravel, och Mailtrap är ett sådant verktyg. Mailtrap använder en falsk SMTP-server för att testa e-postmeddelanden. Det accepterar e-postmeddelanden från den lokala värden som gör att utvecklaren eller testaren kan testa hur e-postmeddelanden kommer att delas innan de skickas till riktiga inkorgar.
Skicka e-postexempel
Låt oss göra ett enkelt exempel med Mailtrap .
Steg 1: Kör följande kommando i kommandotolken för att skapa ett Laravel-projekt med namnet e-handledning .
composer create-project --prefer-dist laravel/laravel:^7.0 email-tutorial
Steg 2: Besök URL och skapa ett nytt Mailtrap-konto eller logga in på Mailtrap-kontot om du redan har ett.
Steg 3: Efter inloggning på Mailtrap-kontot,
# 1) Klicka på Demo-inkorg .
#två) Identifiera Användarnamn och Lösenord under SMTP . Detta användarnamn och lösenord är unika, och vi kommer att använda dem i nästa steg.
Notera: Besök URL för att veta mer om Mailtrap.
Steg 4: Öppna . env filen och ange din Mailtrap användarnamn och lösenord.
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}'
Steg 5: Lägg till följande två rutter till rutter / web.php fil.
Route::get('/contact', 'ContactController@contact')->name('contact'); Route::post('/contact', 'ContactController@sendContactForm')->name('contact.send');
Steg 6: Kör följande kommando i kommandotolken för att skapa FileUploadController och ändra den befintliga koden enligt nedan.
php artisan make: controller 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!'); } }
Steg 7: Kör följande kommando i kommandotolken för att skapa ContactMail klass. Detta kommando skapar en fil med namnet ContactMail.php i App / Mail katalog.
php artisan make:mail ContactMail
Steg 8: Ändra den befintliga koden i ContactMail.php fil som visas nedan.
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); } }
Steg 9: Skapa följande vyfiler och lägg till koder.
# 1) Skapa contact.blade.php filen och lägg till följande 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
#två) Skapa contact-template.blade.php filen och lägg till följande kod.
Name: {{ $data('name') }}
Subject: {{ $data('subject') }}
Message: {{ $data('message') }}
Steg 10: Besök följande URL och den producerar en utdata som liknar skärmdumpen nedan.
Notera : Följande URL kan skilja sig från din.
http: //email-tutorial.test/contact
Steg 11: Fyll i formuläret och skicka.
Steg 12: Besök nu din Mailtrap konto och kontrollera inkorgen. Du kommer att se ett nytt meddelande i din inkorg som liknar skärmdumpen nedan.
Slutsats
Laravel-filöverföring är enkelt och utvecklaren kan också ställa in Laravel-filbehörigheter. Laravel ger ett enkelt sätt att ställa in, hämta och ta bort sessionsdata. Laravel-autentisering hjälper till att identifiera användare medan Laravel-auktorisering verifierar om de autentiserade användarna har behörighet att komma åt de begärda resurserna.
Vi kan använda verktyg som Mailtrap för att testa e-postmeddelanden innan vi skickar dem till faktiska inkorgar.
Vi hoppas att du tyckte att den här handledningen var till hjälp! Hoppas vi ses igen i nästa handledning där vi kommer att diskutera Laravel smedja och samlingar .
Lyckligt lärande!
<< PREV Tutorial | NÄSTA självstudie >>
Rekommenderad läsning
- PHP Laravel Handledning för nybörjare: Vad är Laravel Framework
- Laravel Collection And Laravel Forge Tutorial
- Laravel Database, Migrations, Eloquent ORM And Tinker
- Laravel formulär och valideringsregler med exempel
- Unix File Access Permissions: Unix Chmod, Chown och Chgrp
- Unix Permissions: Filbehörigheter i Unix med exempel
- Hur man laddar upp fil med Selenium Webdriver - 3 metoder
- Filmanipulation i Unix: Översikt över Unix File System