Téléchargement d’un fichiers avec Laravel

Téléchargement d’un fichiers avec Laravel

Comment effectuer un téléchargement de fichiers dans une application Laravel .

Nous allons créer deux routes : l’une pour la méthode GET afin d’afficher les formulaires, et l’autre pour la méthode POST afin de gérer le téléchargement des fichiers. Nous avons conçu un formulaire simple avec un champ d’entrée pour les fichiers. Vous devez simplement sélectionner un fichier, qui sera ensuite téléchargé dans le répertoire “uploads” du dossier public.

Étapes pour le téléchargement de fichiers avec Laravel

Installer Laravel 11
Créer un contrôleur
Créer des routes
Créer un fichier Blade

Étape 1 : Installer Laravel 11

composer create-project laravel/laravel example-app

Étape 2 : Créer un contrôleur

Créez un nouveau contrôleur nommé FileController avec deux méthodes : index() pour afficher les vues et store() pour gérer la logique de stockage des fichiers.

php artisan make:controller FileController

Ajoutez les méthodes nécessaires pour afficher les formulaires et gérer le téléchargement des fichiers.

<?php
  
namespace App\Http\Controllers;
       
use Illuminate\Http\Request;
use Illuminate\View\View;
use Illuminate\Http\RedirectResponse;
      
class FileController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(): View
    {
        return view('fileUpload');
    }
        
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request): RedirectResponse
    {
        $request->validate([
            'file' => 'required|mimes:pdf,xlx,csv|max:2048',
        ]);
        
        $fileName = time().'.'.$request->file->extension();  
         
        $request->file->move(public_path('uploads'), $fileName);
       
        /*  
            Write Code Here for
            Store $fileName name in DATABASE from HERE 
        */
         
        return back()->with('success', 'File uploaded successfully!')
                     ->with('file', $fileName);
   
    }
}
// Store File in Storage Folder
$request->file->storeAs('uploads', $fileName);
// storage/app/uploads/file.png
// Store File in Public Folder
$request->file->move(public_path('uploads'), $fileName);  
// public/uploads/file.png
//Store File in S3
$request->file->storeAs('uploads', $fileName, 's3');

Étape 3 : Créer des routes

Ajoutez des routes dans le fichier routes/web.php pour gérer les requêtes GET et POST :

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\FileController;
  
Route::get('file-upload', [FileController::class, 'index']);
Route::post('file-upload', [FileController::class, 'store'])->name('file.store');

Étape 4 : Créer un fichier Blade

// resources/views/fileUpload.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>Laravel 11 File Upload Example - ItSolutionStuff.com</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdThisnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
</head>
        
<body>
<div class="container">
  
    <div class="card mt-5">
        <h3 class="card-header p-3"><i class="fa fa-star"></i> Laravel 11 File Upload Example - ItSolutionStuff.com</h3>
        <div class="card-body">
  
            @session('success')
                <div class="alert alert-success" role="alert"> 
                    {{ $value }}
                </div>
            @endsession
            
            <form action="{{ route('file.store') }}" method="POST" enctype="multipart/form-data">
                @csrf
        
                <div class="mb-3">
                    <label class="form-label" for="inputFile">File:</label>
                    <input 
                        type="file" 
                        name="file" 
                        id="inputFile"
                        class="form-control @error('file') is-invalid @enderror">
      
                    @error('file')
                        <span class="text-danger">{{ $message }}</span>
                    @enderror
                </div>
         
                <div class="mb-3">
                    <button type="submit" class="btn btn-success"><i class="fa fa-save"></i> Upload</button>
                </div>
             
            </form>
        </div>
    </div>
</div>
</body>
      
</html>

Créez un fichier nommé fileUpload.blade.php dans le dossier resources/views.

Ce fichier contiendra le formulaire permettant de sélectionner et télécharger un fichier.

Une fois toutes les étapes nécessaires terminées, lancez l’application Laravel avec la commande suivante :

php artisan serve

Ensuite, ouvrez votre navigateur web, entrez l’URL suivante et visualisez le résultat de l’application :

http://localhost:8000/file-upload

 

par