Przesyłanie pliku Laravel: kompleksowy samouczek krok po kroku
Opublikowany: 2024-10-07Spis treści
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'));
}
- 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
- 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.