2014-06-09 36 views
0

發佈多部分表單時,我可以使用connect-busboy檢索文件,但無法從req.body中獲取值。我假設我需要掛鉤req.busboy.on('field'),但不知道將其放置在何處,仍然允許我使用當前正在處理上載文件的功能。使用connect-busboy檢索req.body


routes.js

var busboy = require('connect-busboy'); 

module.exports = function (app) { 
    app.use(busboy()); 
    app.route('/upload') 
    .post(function (req, res) { 
     req.pipe(req.busboy); 
     upload.createImg(req, res); 
    }); 

upload.js

var fs = require('fs'); 

exports.createImg = function (req, res) { 
    var fstream, 
     path = './uploads/temp/'; 

    req.busboy.on('file', function (fieldname, file, filename) { 
    fstream = fs.createWriteStream(path + filename); 
    file.pipe(fstream); 
    fstream.on('close', function() { 
     fs.readFile(path + filename, function (err, data) { 
     // need help here 
     }); 
    }); 
    }); 
}); 

在上面的代碼示例中,我是一個檢索上傳的文件,然後我用ImageMagick成功操作。但是,問題是我想從req.body中檢索數據,例如req.height,req.width等等。看起來,busboy並沒有完成它的魔法,不過,因爲req.bodyundefined

我如何才能在fstream.on('close', ...)之內將req.body一起傳遞給我的函數?

回答

2

如果您希望/期望多方/強大風格的API,但是使用busboy代替,則應該查看multer

+0

這一附加層是正是我需要的。謝謝。 – Steve

1

您可以使用此打雜field事件以分析數據 -

req.busboy.on('field', function(fieldname, val) { 
    console.log(fieldname, val); 
});