Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

979
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!