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

319
Visualizações
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 Respostas
Responde à pergunta

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 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