Node.js Busboy analizza i campi e i file separatamente

Mi stavo chiedendo se è ansible ottenere Busboy per analizzare separatamente i campi e i file. (Ho rimosso bodyParser quanto è ansible riempire il disco rigido con i file temporanei molto facilmente.)

Ad esempio – il middleware su cui i parser postano i campi (usati su tutte le richieste POST)

 if (req.method === 'POST') { var form = new busboy({ headers: req.headers, limit: { files: 0 } }); form.on('field', function (fieldname, val, valTruncated, keyTruncated) { req.params.body[fieldname] = val; }); form.on('finish', function () { next(); }); return req.pipe(form); } else { next(); } 

Quindi, nelle pagine di caricamento, utilizzare quanto segue, che utilizza Busboy per ottenere i file pubblicati.

 app.post('/fm/file/upload/:folder', function (req, res) { var isFrame = helpers.toBool(req.param('frame'), false), uploadService = fmUploadService.create(), userId = res.locals.info.User.Id, folder = helpers.toInt(req.param('folder', 0)); uploadService.processUploads(userId, folder, req, res, function (uploadError, allowedAccess, files) { if (uploadError) { if (req.xhr) { res.status(500); res.json(uploadError); } else { res.render('filemanager/file_upload.jade', { actionUrl: '/fm/file/upload/' + folder, tempData: files, isFrame: isFrame, err: uploadError }); } return; } else if (req.xhr) { res.status(200); res.json(files); return; } res.render('filemanager/file_upload.jade', { actionUrl: '/fm/file/upload/' + folder, tempData: files, isFrame: isFrame, err: null }); }); }); 

Attualmente i file saranno sempre 0 come Busboy è già stato eseguito nel middleware.

    Invece di

     form.on('finish', function () { next(); });` 

    provalo con

     form.on('end', function () { next(); });`