Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

File Uploads in Laravel

Introduction

File uploads are a common requirement in web applications. In Laravel, handling file uploads is straightforward thanks to its built-in functionality. This tutorial will guide you through the process of implementing file uploads in a Laravel application, from setting up your environment to storing and retrieving uploaded files.

Setting Up Your Laravel Environment

Before you can begin working with file uploads, ensure that you have a Laravel application set up. You can create a new Laravel project using Composer:

composer create-project --prefer-dist laravel/laravel file-upload-example

After creating your project, navigate to the project directory:

cd file-upload-example

Creating the File Upload Form

Next, you need to create a form that will allow users to upload files. You can create a new view file in the resources/views directory. For example, create a file named upload.blade.php:

resources/views/upload.blade.php

In this file, add the following HTML code for the file upload form:

<form action="{{ route('file.upload') }}" method="POST" enctype="multipart/form-data">
    @csrf
    <input type="file" name="file" required>
    <button type="submit">Upload</button>
</form>
                

Defining Routes

Now, you need to define a route that will handle the file upload. Open the routes/web.php file and add the following code:

Route::get('/upload', function () {
    return view('upload');
});

Route::post('/upload', 'FileUploadController@upload')->name('file.upload');
                

Creating the Controller

Next, create a controller to handle the file upload logic. Use the Artisan command line tool to generate a new controller:

php artisan make:controller FileUploadController

Open the newly created controller file located at app/Http/Controllers/FileUploadController.php and add the following code:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class FileUploadController extends Controller
{
    public function upload(Request $request)
    {
        $request->validate([
            'file' => 'required|file|mimes:jpeg,png,pdf|max:2048',
        ]);

        $path = $request->file('file')->store('uploads');

        return back()->with('success', 'File uploaded successfully: ' . $path);
    }
}
                

Displaying Messages

To display success messages after file uploads, update your upload.blade.php file to include the following code:

@if (session('success'))
    <div class="swf-lsn-alert swf-lsn-alert-success">{{ session('success') }}</div>
@endif
                

Testing the File Upload

Now that you have set up everything, it's time to test the file upload functionality. Run your Laravel application using the following command:

php artisan serve

Open your browser and navigate to http://localhost:8000/upload. You should see your file upload form. Try uploading a file and check for success messages.

Conclusion

In this tutorial, you learned how to implement file uploads in a Laravel application. We covered setting up the environment, creating the upload form, defining routes, creating a controller, and testing the functionality. File uploads are a powerful feature that can enhance the usability of your web applications.