Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

314
Visualizações
¿Cómo guardar una imagen y descargarla en ReactJS?

Tengo una aplicación que muestra una galería de fotos. Debajo de cada foto hay un botón que, cuando se hace clic, se supone que guarda la foto en la computadora del usuario. Desafortunadamente, las fotos se guardan como un documento HTML cuando se descargan. Es por eso que no se pueden abrir después de la descarga. Las fotos se almacenan en una carpeta de carga estática adjunta al proyecto mediante nodejs . ¿Cómo descargo una foto para que se guarde en el formato correcto?

Lo que ya probé es usar el atributo de download colocando la foto debajo de a etiqueta como aquí:

<a href={file.path} download>download</a>` or `<a href={file.path} download={file.name}>download</a> .

También intenté usar el módulo file-saver , pero sin resultado positivo. Con esta solución, la imagen también se guarda como un documento HTML:

 const Gallery = () => { // const downloadImage = (file) => { saveAs( `http://localhost:3000${file.path}`, file.name + '.' + file.type ) } // return ( <button onClick={downloadImage(currentFile)} type='button'> download </button> ) }

En react-router-dom, no tengo la ruta configurada para poder obtener una vista previa de la foto directamente después de hacer clic en la foto.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Creo que esto puede ayudarlo, llame a la función de descarga y luego pase la URL de la imagen, el nombre de la imagen después de la descarga y el tipo de imagen .

 function toDataURL(url) { return fetch(url) .then((response) => { return response.blob(); }) .then((blob) => { return URL.createObjectURL(blob); }); } async function download(url, name = "download", type = "png") { const a = document.createElement("a"); a.style.display = "none"; a.href = await toDataURL(url); a.download = name + "." + type; document.body.appendChild(a); a.click(); document.body.removeChild(a); }

código fuente => https://stackoverflow.com/a/56041886/11115457

descripción del código

primero cree un enlace temporal (invisible) y luego envíe una solicitud a su servidor para obtener datos de la imagen, luego configure los datos de la imagen como enlace href que creamos y luego agregue el enlace al cuerpo, necesitamos un clic virtual en este enlace usando js finalmente elimine una etiqueta de cuerpo

Listo, imagen descargada...

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda