Przesyłanie pliku Laravel: kompleksowy samouczek krok po kroku

Opublikowany: 2024-10-07

Spis treści

Dźwignia kolankowa

Przesyłanie plików Laravel

Przesyłanie plików to istotna funkcja wielu aplikacji internetowych, umożliwiająca użytkownikom przesyłanie różnych typów plików, takich jak obrazy, dokumenty lub filmy. Laravel, popularny framework PHP, oferuje płynny i bezpieczny sposób obsługi przesyłania plików. W tym samouczku przyjrzymy się, jak od podstaw skonfigurować i wdrożyć przesyłanie plików w Laravel. Niezależnie od tego, czy jesteś początkującym, czy średnio zaawansowanym programistą, ten przewodnik pomoże Ci opanować przesyłanie plików w Laravel.

1. Wprowadzenie do przesyłania plików Laravel

Przesyłanie plików jest integralną częścią nowoczesnych aplikacji internetowych. Niezależnie od tego, czy przesyłasz zdjęcia profilowe, życiorysy czy treści multimedialne, posiadanie niezawodnego i bezpiecznego systemu przesyłania plików ma kluczowe znaczenie. Laravel dzięki wbudowanym funkcjom sprawia, że ​​proces ten jest prosty i wydajny. Dzięki obsłudze sprawdzania poprawności, przechowywania i bezpieczeństwa plików Laravel oferuje płynny sposób zarządzania przesyłaniem plików.

W tym samouczku będziemy:

  • Utwórz formularz przesyłania plików.
  • Obsługuj sprawdzanie poprawności plików.
  • Przechowuj pliki na serwerze.
  • Wyświetl przesłane pliki.
  • Zabezpiecz proces przesyłania plików.

Pod koniec tego przewodnika będziesz mieć solidną wiedzę na temat wdrażania i dostosowywania przesyłania plików w aplikacjach Laravel.

2. Warunki wstępne

Zanim zagłębisz się w samouczek, upewnij się, że na komputerze są zainstalowane następujące elementy:

  • PHP >= 8.0
  • Kompozytor(Menedżer zależności dla PHP)
  • Laravel 9 lub nowszy
  • MySQL lub SQLitedo zarządzania bazami danych
  • Podstawowa znajomość Laravela i PHP

Jeśli nie wiesz, jak skonfigurować Laravel, zapoznaj się z oficjalną dokumentacją Laravel lub użyj następującego polecenia, aby utworzyć nowy projekt Laravel:

grzmotnąć

Skopiuj kod

kompozytor utwórz-projekt –prefer-dist laravel/laravel plik-samouczek przesyłania plików

Po utworzeniu projektu przejdź do folderu projektu:

grzmotnąć

Skopiuj kod

samouczek przesyłania plików CD

3. Konfigurowanie projektu Laravel

Po skonfigurowaniu projektu Laravel skonfigurujmy podstawowe ustawienia:

Konfiguracja bazy danych:Otwórz plik .env w katalogu głównym i zaktualizuj poświadczenia bazy danych. Jeśli używasz MySQL, zaktualizuj następujące pola:
tekst jawny
Skopiuj kod
DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=laravel_upload

DB_USERNAME=root

DB_HASŁO=

Po skonfigurowaniu pliku .env uruchom następującą komendę, aby przeprowadzić migrację tabel domyślnych:
grzmotnąć
Skopiuj kod
Migracja rzemieślnika php

A. Zainstaluj Bootstrap (opcjonalnie)

Aby nadać styl formularzowi przesyłania, możesz dla ułatwienia dołączyć Bootstrap. W folderze Resources/views/layouts utwórz plik układ.blade.php i dołącz Bootstrap:

HTML
Skopiuj kod
<!DOCTYPE html>

<html lang=”pl”>

<głowa>

<meta zestaw znaków=”UTF-8″>

<meta name=”viewport” content=”width=szerokość-urządzenia, skala początkowa=1,0″>

<title>Samouczek przesyłania plików</title>

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

</head>

<ciało>

<div class=”kontener mt-5″>

@yield('treść')

</div>

</ciało>

</html>

4. Tworzenie formularza przesyłania plików

Utwórzmy teraz formularz przesyłania plików.

Utwórz kontroler:Wygeneruj kontroler do obsługi przesyłania plików:
grzmotnąć
Skopiuj kod
rzemieślnik php make:controller FileUploadController

Zdefiniuj formularz:W folderze Resources/views utwórz plik o nazwie upload.blade.php z następującym kodem:
HTML
Skopiuj kod
@extends('układy.układ')

@sekcja('treść')

<div class="wiersz">

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

<h3 class=”text-center”>Prześlij plik</h3>

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

@csrf

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

<label for="file”>Wybierz plik:</label>

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

@error('plik')

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

@enderror

</div>

<button type=”submit” class=”btn btn-primary”>Prześlij</button>

</form>

</div>

</div>

@koniec

Skonfiguruj trasy:W pliku tras/web.php zdefiniuj trasy do wyświetlania formularza i obsługi przesyłania plików:
php
Skopiuj kod
użyj App\Http\Controllers\FileUploadController;

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

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

5. Obsługa logiki przesyłania plików

W pliku FileUploadController.php napisz logikę obsługującą proces przesyłania plików:

Pokaż formularz:
php
Skopiuj kod
funkcja publiczna showForm() {

powrót widok('prześlij');

}

Obsługa przesyłania plików:
W tym samym kontrolerze dodaj następującą metodę obsługi przesyłania plików:
php
Skopiuj kod
funkcja publiczna uploadFile(Żądanie $request) {

// Sprawdź przesłany plik

$żądanie->validate([

'file' => 'wymagany|plik|mimes:jpeg,png,pdf,docx|max:2048',

]);

// Zapisz plik

if ($żądanie->plik('plik')) {

$Nazwapliku = czas() . „_” . $request->file->getClientOriginalName();

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

}

return back()->with('success', 'Plik został pomyślnie przesłany.');

}

Ta metoda sprawdza poprawność pliku, sprawdza, czy plik istnieje i przechowuje go przy użyciu metody storeAs .

6. Sprawdzanie przesłanych plików

Weryfikacja ma kluczowe znaczenie, aby mieć pewność, że użytkownicy przesyłają tylko dozwolone typy i rozmiary plików. Metoda sprawdzania poprawności Laravela upraszcza ten proces. Stosowane tutaj zasady walidacji to:

  • wymagane : zapewnia przesłanie pliku.
  • plik : zapewnia, że ​​przesłany element jest plikiem.
  • mimes : Określa dozwolone typy plików (np. jpeg, png, pdf, docx).
  • max : Określa maksymalny rozmiar pliku w kilobajtach (np. 2048 KB = 2 MB).

Reguły te można dostosować do wymagań aplikacji.

7. Przechowywanie plików

Fasada magazynu Laravel umożliwia łatwe przechowywanie plików. W powyższym przykładzie używamy metody storeAs do przechowywania pliku w katalogu public/uploads . Aby udostępnić folder public/uploads , musisz połączyć katalog przechowywania z folderem publicznym. Uruchom następujące polecenie:

grzmotnąć

Skopiuj kod

Pamięć rzemieślnicza php: link

To polecenie tworzy dowiązanie symboliczne z Storage/app/public do public/storage .

8. Wyświetlanie przesłanych plików

Aby wyświetlić przesłane pliki, pobierz je z folderu przechowywania i wygeneruj adres URL, korzystając z fasady magazynu . Oto sposób wyświetlania obrazów lub plików:

W kontrolerze:
php
Skopiuj kod
funkcja publiczna showUploads() {

$files = Storage::disk('public')->files('uploads');

return view('przesłane', kompaktowe('pliki'));

}

  1. W widoku:

Utwórz plik Resources/views/uploads.blade.php :
HTML
Skopiuj kod
@extends('układy.układ')

@sekcja('treść')

<h3>Przesłane pliki:</h3>

<ul>

@foreach(pliki $ jako plik $)

<li><a href=”{{ aktywa('storage/' . $plik) }}”>{{ nazwabazowa($plik) }</a></li>

@endforeach

</ul>

@koniec

  1. Spowoduje to wygenerowanie listy przesłanych plików z linkami do pobrania.

9. Zabezpieczanie przesyłanych plików

Przesyłanie plików może stanowić zagrożenie dla bezpieczeństwa, jeśli nie jest właściwie obsługiwane. Oto kilka najlepszych praktyk dotyczących zabezpieczania przesyłanych plików:

  • Ogranicz dozwolone typy plików: Zawsze sprawdzaj typ pliku, korzystając z reguły MIME .
  • Ogranicz rozmiar pliku: Ogranicz rozmiar pliku, aby zapobiec nadmiernemu zużyciu zasobów serwera.
  • Używaj prawidłowego nazewnictwa plików: przechowuj pliki, używając unikalnych nazw, aby uniknąć nadpisania istniejących plików.
  • Skanuj pliki: rozważ użycie oprogramowania antywirusowego lub narzędzi do skanowania plików w celu wykrycia złośliwych przesłanych plików.
  • Ogranicz dostęp publiczny: unikaj przechowywania poufnych plików w publicznie dostępnych katalogach. Możesz użyć katalogu przechowywania Laravela do przechowywania prywatnych plików i utworzyć kontroler, aby bezpiecznie je udostępniać.

10. Wniosek

Przesyłanie plików jest istotną funkcją wielu aplikacji internetowych, a Laravel upraszcza ten proces dzięki wbudowanym narzędziom i funkcjom. W tym samouczku omówiliśmy podstawy konfigurowania przesyłania plików, sprawdzania poprawności i przechowywania plików, wyświetlania ich oraz zabezpieczania procesu przesyłania. Dzięki tym podstawom możesz dostosować i rozszerzyć funkcję przesyłania plików, aby odpowiadała potrzebom Twojego projektu.