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

984
Vistas
Cómo descargar archivos grandes de un servidor desde el frontend (VueJS) usando fetch o axios. Consigue una descarga simultánea mientras buscas

Mi interfaz (escrita en VueJS) necesita descargar un archivo grande de un servidor (~ 1 GB pero puede ser aún más grande). Sin embargo, mi enfoque actual es usar streamSaver , aunque esto parece funcionar bien cuando descargo archivos mientras pruebo localmente, parece tener problemas cuando lo pruebo en otros dispositivos (teléfono Android mientras apunta el servidor a 0.0.0.0)

Código front-end para la descarga, actualmente estoy canalizando los datos de recuperación a streamSaver, sin embargo, por lo que entiendo, la solicitud de recuperación debe completarse antes de que comience la acción de descarga, que no es realmente la solución que necesito. Quiero poder iniciar la descarga simultáneamente.

 const fileStream = streamSaver.createWriteStream(fileName); const res = await fetch("gets/download-file?" + new URLSearchParams({ relPath: path.join(forPath, fileName) })) const readableStream = res.body if (window.WritableStream && readableStream.pipeTo) { return readableStream.pipeTo(fileStream) .then(() => console.log('done writing')) } window.writer = fileStream.getWriter() const reader = res.body.getReader() const pump = () => reader.read() .then(res => res.done ? window.writer.close() : window.writer.write(res.value).then(pump)) pump()

Mi servidor está escrito en express.js, y también he intentado transmitir los datos desde el lado del servidor.

 router.get("/download-file", checkPath, async (req, res) => { try { const relativePath = req.query.relPath; const fullPath = path.join(UPLOAD_FOLDER, relativePath); console.log(green("Downloading: ", fullPath)) // res.sendFile(fullPath, (err) => { // if (err) console.log(red(err)) // }) res.setHeader('Content-Type', 'application/octet-stream'); fs.createReadStream(fullPath).pipe(res); } catch (err) { console.log(red(err)) } })

He visto Transmitir un archivo de blob grande usando StreamSaver.js y otras respuestas similares, pero todas parecen tener fallas similares de tener que completar la solicitud de recuperación y esperar hasta entonces antes de transmitir una descarga, que no es lo que estoy buscando. .

over 4 years ago · Santiago Trujillo
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