Subir imágenes es una funcionalidad muy común en cualquier aplicación web. Por ejemplo:

  • perfiles de usuario,
  • productos de una tienda,
  • artículos de un blog.

En este tutorial aprenderás a subir imágenes con Laravel de forma sencilla y segura.

Crear el formulario HTML

Primero necesitamos un formulario para subir la imagen:

<form action="/upload" method="POST" enctype="multipart/form-data">
    @csrf
    <input type="file" name="image">
    <button type="submit">Subir imagen</button>
</form>

El atributo importante aquí es:

enctype="multipart/form-data"

Sin él, el archivo no se enviará correctamente.

Crear la ruta

Ahora definimos una ruta en Laravel:

use App\Http\Controllers\UploadController;

Route::post('/upload', [UploadController::class, 'store']);

Crear el controlador

Creamos el controlador con Artisan:

php artisan make:controller UploadController

Ahora implementamos el método store:

public function store(Request $request)
{
    $request->validate(['image' => 'required|image|max:2048']);

    $path = $request->file('image')->store('images', 'public');

    return back()->with('success', 'Imagen subida correctamente');
}

Este código:

  • valida que el archivo sea una imagen,
  • limita el tamaño a 2 MB,
  • guarda la imagen en el disco public.

Crear el enlace al almacenamiento

Para que las imágenes puedan verse en el navegador, ejecuta:

php artisan storage:link

Esto crea un enlace simbólico hacia la carpeta storage.

Mostrar la imagen

Para mostrar la imagen en una vista Blade:

<img src="{{ asset('storage/' . $path) }}">

Conclusión

Subir imágenes con Laravel es muy sencillo gracias a las herramientas que ofrece el framework. En este tutorial aprendiste a:

  • crear un formulario de subida,
  • validar archivos,
  • guardar imágenes en el servidor,
  • mostrarlas en la vista.

Esta funcionalidad es la base de muchas aplicaciones web modernas.