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.