From 8f2ee2771166747f95c65304265dff21783201e1 Mon Sep 17 00:00:00 2001 From: santiago Date: Wed, 1 Oct 2025 15:21:02 -0600 Subject: [PATCH] Se agregaron las funcionalidades de subir eventos e imagenes en carga masiva --- .../user/eventos/carga_masiva_banner/page.tsx | 145 +++++++++++++++++- 1 file changed, 141 insertions(+), 4 deletions(-) diff --git a/src/app/(admins)/user/eventos/carga_masiva_banner/page.tsx b/src/app/(admins)/user/eventos/carga_masiva_banner/page.tsx index efca5a4..a0d0892 100644 --- a/src/app/(admins)/user/eventos/carga_masiva_banner/page.tsx +++ b/src/app/(admins)/user/eventos/carga_masiva_banner/page.tsx @@ -1,7 +1,144 @@ -export default function CargaMasivaBanner() { +"use client"; + +import React, { useState } from "react"; +import axios from "axios"; +import { Image } from "react-bootstrap"; + +//Para poder subir las imagenes +interface UploadedImage { + originalName: string; + filename: string; + path: string; +} + +export default function BannerUpload() { + const [files, setFiles] = useState([]); + const [loading, setLoading] = useState(false); + const [uploaded, setUploaded] = useState([]); + const [progress, setProgress] = useState(0); + + const handleFileChange = (e: React.ChangeEvent) => { + if (e.target.files) { + setFiles(Array.from(e.target.files)); + } + }; + + const handleUpload = async () => { + if (files.length === 0) { + alert("Selecciona al menos un archivo"); + return; + } + + const formData = new FormData(); + files.forEach((file) => { + formData.append("banners", file); + }); + + try { + setLoading(true); + setProgress(0); + + const res = await axios.post("/cuestionario/banners/bulk", formData, { + headers: { "Content-Type": "multipart/form-data" }, + onUploadProgress: (progressEvent) => { + if (progressEvent.total) { + setProgress( + Math.round((progressEvent.loaded * 100) / progressEvent.total) + ); + } + }, + }); + + setUploaded(res.data); + alert("Banners subidos correctamente ✅"); + setFiles([]); + } catch (error) { + console.error(error); + alert(error || "Error al subir archivos"); + } finally { + setLoading(false); + } + }; + return ( -
- Hola mundo +
+

Subir Banners

+ + {/* Área Drag & Drop */} + + + {/* Falta corregir el tamaño de la imagen */} + {/* Previsualización de imágenes */} + {files.length > 0 && ( +
+ {files.map((file, i) => ( +
+ {file.name} +

{file.name}

+
+ ))} +
+ )} + + {/* Botón Subir */} + + + {/* Barra de progreso */} + {loading && ( +
+
+
+ )} + + {/* Archivos subidos */} + {uploaded.length > 0 && ( +
+

Archivos subidos:

+
    + {uploaded.map((file, i) => ( +
  • + {file.originalName} + + Ver + +
  • + ))} +
+
+ )}
); -} \ No newline at end of file +}