Încărcarea fișierelor Laravel: un tutorial cuprinzător pas cu pas

Publicat: 2024-10-07

Cuprins

Comutați

Încărcare fișier Laravel

Încărcarea fișierelor este o caracteristică esențială în multe aplicații web, permițând utilizatorilor să încarce diferite tipuri de fișiere, cum ar fi imagini, documente sau videoclipuri. Laravel, un cadru PHP popular, oferă o modalitate simplă și sigură de a gestiona încărcările de fișiere. În acest tutorial, vom explora cum să configurați și să implementăm încărcările de fișiere în Laravel de la zero. Indiferent dacă sunteți un începător sau un dezvoltator intermediar, acest ghid vă va ajuta să stăpâniți încărcarea fișierelor în Laravel.

1. Introducere în Laravel File Upload

Încărcările de fișiere sunt parte integrantă a aplicațiilor web moderne. Fie că este vorba despre încărcarea de fotografii de profil, CV-uri sau conținut multimedia, este esențial să aveți un sistem de încărcare a fișierelor fiabil și sigur. Laravel, cu funcțiile sale încorporate, face acest proces simplu și eficient. Cu suport pentru validarea fișierelor, stocare și securitate, Laravel oferă o modalitate simplă de a gestiona încărcările de fișiere.

În acest tutorial, vom:

  • Creați un formular de încărcare a fișierelor.
  • Gestionați validarea fișierelor.
  • Stocați fișiere pe server.
  • Afișează fișierele încărcate.
  • Securizați procesul de încărcare a fișierelor.

Până la sfârșitul acestui ghid, veți avea o înțelegere solidă despre cum să implementați și să personalizați încărcările de fișiere în aplicațiile Laravel.

2. Cerințe preliminare

Înainte de a vă scufunda în tutorial, asigurați-vă că următoarele sunt instalate pe mașina dvs.:

  • PHP >= 8.0
  • Compozitor(Manager de dependență pentru PHP)
  • Laravel 9 sau mai mare
  • MySQL sau SQLitepentru gestionarea bazelor de date
  • Cunoștințe de bază despre Laravel și PHP

Dacă nu sunteți familiarizat cu cum să configurați Laravel, consultați documentația oficială Laravel sau utilizați următoarea comandă pentru a crea un nou proiect Laravel:

bash

Copiați codul

compozitor create-project –prefer-dist laravel/laravel file-upload-tutorial

Odată ce proiectul este creat, navigați la folderul proiectului:

bash

Copiați codul

Tutorial pentru încărcare fișier cd

3. Configurarea unui proiect Laravel

Odată ce proiectul tău Laravel este configurat, haideți să configuram setările de bază:

Configurarea bazei de date:Deschideți fișierul .env din directorul rădăcină și actualizați datele de conectare ale bazei de date. Dacă utilizați MySQL, actualizați următoarele câmpuri:
text simplu
Copiați codul
DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=laravel_upload

DB_USERNAME=rădăcină

DB_PAROLA=

După configurarea fișierului .env , rulați următoarea comandă pentru a migra tabelele implicite:
bash
Copiați codul
php artizan migra

A. Instalați Bootstrap (Opțional)

Pentru a stila formularul de încărcare, puteți include Bootstrap pentru ușurință. În folderul resurse/vizualizări/aspecte , creați un fișier layout.blade.php și includeți Bootstrap:

html
Copiați codul
<!DOCTYPE html>

<html lang="ro">

<cap>

<meta charset="UTF-8">

<meta name="viewport” content="width=device-width, initial-scale=1.0″>

<title>Tutorial pentru încărcarea fișierelor</title>

<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css” rel="stylesheet">

</cap>

<corp>

<div class="container mt-5">

@yield('conținut')

</div>

</corp>

</html>

4. Crearea formularului de încărcare a fișierelor

Acum, să creăm un formular de încărcare a fișierelor.

Creați un controler:generați un controler pentru gestionarea încărcărilor de fișiere:
bash
Copiați codul
php artisan make:controller FileUploadController

Definiți formularul:în folderul resurse/vizualizări , creați un fișier numit upload.blade.php cu următorul cod:
html
Copiați codul
@extends('layouts.layout')

@section('conținut')

<div class="row">

<div class="col-md-6 offset-md-3″>

<h3 class="text-center">Încărcați un fișier</h3>

<form action=”{{ route('file.upload.post') }}” method=”POST” enctype=”multipart/form-data”>

@csrf

<div class="form-group mb-3″>

<label for="file”>Alegeți un fișier:</label>

<input type=”file” class=”form-control” name=”file” id=”file”>

@error('fișier')

<small class="text-danger">{{ $message }}</small>

@enderror

</div>

<button type="submit” class="btn btn-primary”>Încărcați</button>

</form>

</div>

</div>

@endsection

Configurați rute:În fișierul routes/web.php , definiți rutele pentru afișarea formularului și gestionarea încărcărilor de fișiere:
php
Copiați codul
utilizați App\Http\Controllers\FileUploadController;

Route::get('upload', [FileUploadController::class, 'showForm'])->name('file.upload');

Route::post('upload', [FileUploadController::class, 'uploadFile'])->name('file.upload.post');

5. Gestionarea logicii de încărcare a fișierelor

În FileUploadController.php , scrieți logica pentru a gestiona procesul de încărcare a fișierului:

Afișați formularul:
php
Copiați codul
funcția publică showForm() {

return view('upload');

}

Gestionați încărcările de fișiere:
În același controler, adăugați următoarea metodă pentru a gestiona încărcările de fișiere:
php
Copiați codul
funcția publică uploadFile(Solicitare $request) {

// Validează fișierul încărcat

$cerere->validare([

'fișier' => 'necesar|fișier|mimes:jpeg,png,pdf,docx|max:2048',

]);

// Stocați fișierul

if ($cerere->fișier('fișier')) {

$fileName = time() . '_' . $cerere->fișier->getClientOriginalName();

$filePath = $request->file('file')->storeAs('uploads', $fileName, 'public');

}

return back()->with('success', 'Fişier încărcat cu succes.');

}

Această metodă efectuează validarea fișierului, verifică dacă fișierul este prezent și îl stochează folosind metoda storeAs .

6. Validarea fișierelor încărcate

Validarea este esențială pentru a se asigura că utilizatorii încarcă numai tipurile și dimensiunile permise de fișiere. Metoda de validare a lui Laravel simplifică acest proces. Regulile de validare folosite aici sunt:

  • necesar : asigură că fișierul este încărcat.
  • fișier : asigură că elementul încărcat este un fișier.
  • mimes : Specifică tipurile de fișiere permise (de exemplu, jpeg, png, pdf, docx).
  • max : Specifică dimensiunea maximă a fișierului în kiloocteți (de exemplu, 2048 KB = 2 MB).

Puteți personaliza aceste reguli pentru a se potrivi cerințelor aplicației dvs.

7. Stocarea fișierelor

Fațada de stocare a lui Laravel vă permite să stocați fișiere cu ușurință. În exemplul de mai sus, folosim metoda storeAs pentru a stoca fișierul în directorul public/uploads . Pentru a face folderul public/încărcări accesibil, trebuie să conectați directorul de stocare cu folderul public. Rulați următoarea comandă:

bash

Copiați codul

php Artisan Storage:link

Această comandă creează o legătură simbolică de la stocare/aplicație/public la public/stocare .

8. Afișarea fișierelor încărcate

Pentru a afișa fișierele încărcate, preluați-le din folderul de stocare și generați o adresă URL utilizând fațada Stocare . Iată cum puteți afișa imagini sau fișiere:

În controler:
php
Copiați codul
funcția publică showUploads() {

$fișiere = Stocare::disk('public')->fișiere('încărcări');

return view('încărcări', compact('fișiere'));

}

  1. În vedere:

Creați un fișier resurse/views/uploads.blade.php :
html
Copiați codul
@extends('layouts.layout')

@section('conținut')

<h3>Fișiere încărcate:</h3>

<ul>

@foreach($fișiere ca $fișier)

<li><a href=”{{ asset('storage/' . $file) }}”>{{ basename($file) }}</a></li>

@endforeach

</ul>

@endsection

  1. Aceasta va genera o listă de fișiere încărcate cu link-uri de descărcare.

9. Securizarea încărcărilor de fișiere

Încărcările de fișiere pot prezenta riscuri de securitate dacă nu sunt gestionate corespunzător. Iată câteva dintre cele mai bune practici pentru a securiza încărcările de fișiere:

  • Limitați tipurile de fișiere permise: validați întotdeauna tipul de fișier folosind regula mimes .
  • Limitați dimensiunea fișierului: restricționați dimensiunile fișierelor pentru a preveni consumul excesiv de resurse de server.
  • Utilizați denumirea corectă a fișierelor: stocați fișierele folosind nume unice pentru a evita suprascrierea fișierelor existente.
  • Scanați fișiere: luați în considerare utilizarea antivirusului sau a instrumentelor de scanare a fișierelor pentru a detecta încărcările rău intenționate.
  • Restricționați accesul public: evitați stocarea fișierelor sensibile în directoare accesibile publicului. Puteți utiliza directorul de stocare al lui Laravel pentru fișiere private și puteți crea un controler pentru a le servi în siguranță.

10. Concluzie

Încărcările de fișiere sunt o caracteristică vitală pentru multe aplicații web, iar Laravel simplifică procesul cu instrumentele și funcționalitățile sale încorporate. În acest tutorial, am abordat elementele de bază ale instalării încărcărilor de fișiere, validării și stocării fișierelor, afișarea acestora și securizarea procesului de încărcare. Cu această bază, puteți personaliza și extinde funcționalitatea de încărcare a fișierelor pentru a se potrivi nevoilor proiectului dvs.