Inicio > Desarrollo Web > Tutoriales de Laravel > Guía completa para subir archivos en Laravel con AWS S3

Guía completa para subir archivos en Laravel con AWS S3

Diego Cortés
Diego Cortés
January 20, 2025
Guía completa para subir archivos en Laravel con AWS S3

Subir archivos a la nube es una práctica común en el desarrollo web moderno, y AWS S3 se ha convertido en una de las opciones más populares para almacenar esos datos. Si estás utilizando Laravel como tu framework, aprovechar AWS S3 para manejar y almacenar archivos es una tarea bastante sencilla, que puede facilitar mucho tu trabajo. En esta guía te mostraré los pasos necesarios para integrar AWS S3 con tu aplicación Laravel.

Requisitos previos

Antes de comenzar, asegúrate de tener lo siguiente:

  • Una cuenta de AWS.
  • Un bucket creado en S3.
  • Laravel instalado en tu entorno de desarrollo.
  • Composer para gestionar dependencias.

Instalación del paquete de AWS SDK

El primer paso para empezar a utilizar AWS S3 en tu proyecto Laravel es instalar el SDK de AWS para PHP. Esto se puede hacer fácilmente mediante Composer. Ejecuta el siguiente comando en tu terminal:

composer require aws/aws-sdk-php

Este paquete te permitirá interactuar con los servicios de AWS, incluyendo S3.

Configuración de AWS S3 en Laravel

Para que Laravel pueda comunicarse adecuadamente con AWS S3, es necesario configurar el archivo de configuración de almacenamiento. Abre el archivo config/filesystems.php y añade la configuración de S3:

's3' => [
    'driver' => 's3',
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION'),
    'bucket' => env('AWS_BUCKET'),
],

Además, asegúrate de agregar las variables necesarias en tu archivo .env con las credenciales de tu cuenta de AWS:

AWS_ACCESS_KEY_ID=tu_clave_de_acceso
AWS_SECRET_ACCESS_KEY=tu_clave_secreta
AWS_DEFAULT_REGION=tu_region
AWS_BUCKET=tu_nombre_de_bucket

Creación del formulario de carga

Para cargar archivos, es necesario crear un formulario en tu vista. Este formulario debe incluir un campo para seleccionar el archivo y un botón para enviarlo. Aquí tienes un ejemplo básico:

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

Manejo de la carga en el controlador

Una vez que el usuario selecciona un archivo y hace clic en el botón, el siguiente paso es manejar la carga en el controlador. Puedes crear un método en tu controlador para procesar el archivo y subirlo a S3, como se muestra a continuación:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;

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

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

    return back()->with('success', 'Archivo subido con éxito: ' . $path);
}

Este código valida que se haya subido un archivo y lo almacena en la carpeta uploads dentro de tu bucket S3.

Visualización de archivos

Finalmente, si deseas mostrar los archivos subidos, puedes hacerlo utilizando la URL proporcionada por S3:

$url = Storage::disk('s3')->url($path);

Esto generará una URL que se puede utilizar para acceder al archivo almacenado en S3.

Conclusión

Subir archivos a AWS S3 mediante Laravel es un proceso sencillo si sigues estos pasos. Desde la configuración del SDK hasta la creación de formularios de carga, es fácil integrar este potente servicio en tu aplicación. Si deseas más información sobre cómo manejar archivos en Laravel, te invito a seguir explorando mi blog, donde encontrarás más noticias y guías útiles.

Diego Cortés
Diego Cortés
Full Stack Developer, SEO Specialist with Expertise in Laravel & Vue.js and 3D Generalist

Categorías

Page loaded in 23.99 ms