Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

540
Vistas
Cómo cargar varias imágenes en reaccionar (nextjs)

Estoy tratando de cargar varias imágenes en React (nextjs) desde <input onChange={onChange} type='file' name='file' multiple/> Pero, ¿de qué manera es más adecuado hacerlo? Algunas horas de búsqueda en Google no me ayudaron. Este es mi enfoque (eso no funciona, de lo contrario no tendría que escribirlo):

Almacené los srcs de las imágenes usando useState hook:

 const [imgsSrc, setImgsSrc] = useState([])

Y esta es mi "entrada en el controlador de cambios":

 const onChange = (changeEvent: any) => { for (let file of changeEvent.target.files) { setTimeout(() => { const reader = new FileReader() reader.readAsDataURL(file) reader.onload = () => { setImgsSrc([...imgsSrc, reader.result]) } reader.onerror = () => { console.log(reader.error)} }, 1000) } }

Mi input una vez más

 <input onChange={onChange} type='file' name='file' multiple/>

Y mi forma de tratar de mostrar imágenes al usuario.

 { imgsSrc.map((link) => { <img src={link}/> }) }

Pero no me muestra nada, así que tengo un par de preguntas a las que mis células nerviosas estarían encantadas de obtener una respuesta.

  1. porque no funciona
  2. "Guardar imágenes en una carpeta public en el directorio raíz de la aplicación" es un buen enfoque para guardar imágenes
  3. ¿Puedo almacenar las URL codificadas en base64 de forma remota y obtener cada solicitud, decodificarlas y obtener una imagen?

por favor...

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Guardar imágenes en el directorio público no es un buen enfoque, debe probar aplicaciones de computación en la nube como AWS, Google o Cloudinary. pero preferiría usar Cloudinary porque puede almacenar aproximadamente 10 GB de imágenes en una cuenta gratuita y también es fácil de integrar con aplicaciones de reacción. ¿Como funciona?

1- guarde su imagen en Cloudinary a través de una solicitud API, luego Cloudinary devuelve el enlace de la imagen en respuesta.

2-guardar el enlace de la imagen dentro de la base de datos

tutorial => subir imagen cloudinary y reaccionar

about 4 years ago · Juan Pablo Isaza Denunciar

0

Básicamente tienes un par de errores que impiden que tu código muestre algo:

 function App() { const [imgsSrc, setImgsSrc] = useState([]); const onChange = (e) => { for (const file of e.target.files) { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => { setImgsSrc((imgs) => [...imgs, reader.result]); }; reader.onerror = () => { console.log(reader.error); }; } }; console.log(imgsSrc, imgsSrc.length); return ( <div> <input onChange={onChange} type="file" name="file" multiple /> {imgsSrc.map((link) => ( <img src={link} /> ))} </div> ); }

Dado que el lector de archivos es asíncrono, debe decirle a React que actualice el estado usando el estado más reciente, o tendrá errores, porque setState también es asíncrono, y los comandos de bucle se agrupan y se anulan entre sí.

El hecho de que no tenga ninguna salida de imagen se debe a que no está devolviendo nada de .map .

Puede verificar la versión corregida: https://stackblitz.com/edit/react-pgtpnu?file=src%2FApp.js

No puede guardar archivos en el servidor si está usando NextJS y lo implementa en un entorno sin servidor, necesita usar un servicio en la nube, puede usar firestore para guardar cadenas base64, o incluso mejor, cargue los blobs directamente en cloudinary, a través de Las funciones sin servidor de multer middleware nextJS le permiten escribir una función de este tipo en unas pocas líneas.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda