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

313
Vistas
Cómo cerrar la conexión Busboy y devolver una respuesta de error en ExpressJS

Tengo busboy en mi aplicación ExpressJS para la transmisión de archivos. Ahora, en algún momento, deseo enviar una respuesta regular de que el tamaño del archivo es demasiado grande. ¿Cómo puedo hacer eso?

Aquí está mi código para ilustrar lo que quiero:

 busboy.on('file', function(fieldname, file, filename, encoding, mimetype) { console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype); let fileSize = 0; file.on('data', function(data) { fileSize += data.length; console.log('File [' + fieldname + '] got ' + data.length + ' bytes'); }); file.on('end', function() { console.log('File [' + fieldname + '] Finished'); if (fileSize > MAXIMUM_ALLOWED_FILE_UPLOAD_SIZE) { //I wish to send back a regular response that the file size is too large here. } fileSize = 0; }); }); busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated, encoding, mimetype) { console.log('Field [' + fieldname + ']: value: ' + inspect(val)); });

¿Cómo puedo lograr eso?

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

0

Busboy tiene un tamaño máximo de bytes de archivo que puede especificar en la opción de límites, lo que evitará que introduzca más datos en el archivo que su límite especificado. Si desea limitar el tamaño de carga de su archivo, me iría con eso. Emite un evento de 'límite' en el archivo si alcanza el tamaño máximo.

Busboy también maneja cargas múltiples, no estoy seguro si desea manejar eso o no. Pero aquí hay una muestra con un límite y múltiples cargas:

 var express = require('express'); var Busboy = require('busboy'); var html_escaper = require('html-escaper'); var fs = require('fs'); var escaper = html_escaper.escape; const MAX_UPLOAD_SIZE = 10000; var app = express(); app.get('/', function(req, res) { res.writeHead(200, {'Content-type': 'text/html'}) res.write('<!doctype html><html><body>'); res.write('<form action="fileupload" method="post" enctype="multipart/form-data">') res.write('<input type="file" name="upload_1">') res.write('<input type="file" name="upload_2">'); res.write('<input type="submit"></form>'); res.write('</body></html>') return res.end(); }) app.post('/fileupload', function (req, res) { var busboy = new Busboy({ headers: req.headers, limits: { fileSize: MAX_UPLOAD_SIZE } }); var fileList = []; busboy.on('file', function(fieldname, file, filename, encoding, mimetype ) { fileInfo = { 'fObj': file, 'file': filename, 'status': 'uploaded' } fileList.push(fileInfo); file.on('limit', function() { fileInfo.status = `Size over max limit (${MAX_UPLOAD_SIZE} bytes)`; }); file.on('end', function() { if (fileInfo.fObj.truncated) { if (fileInfo.status === 'uploaded') { // this shouldn't happen console.error(`we didn't get the limit event for ${fObj.file}???`); fileInfo.status = `Size over max limit (${MAX_UPLOAD_SIZE} bytes)`; } } }); file.pipe(fs.createWriteStream(`./uploads/${fileList.length}.bin`)); }); busboy.on('finish', function() { var out = ""; fileList.forEach(o => { out += `<li>${escape(o['file'])} : ${o['status']}</li>` }); res.writeHead(200, {'Connection': 'close'}); res.end(`<html><body><ul>${out}</ul></body></html>`); }) return req.pipe(busboy); }); app.listen(8080);
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