2016-02-12 41 views
0

我有一臺使用express的節點服務器。如果我沒有上傳文件,如何獲得npm的multer請求的正文?

我原來使用body-parser,但是不允許上傳文件。所以,我切換到multer(與express最容易集成)。然而,爲了得到任何的req(特別req.body),這是我的代碼:

var multer = require('multer'); 
var upload = multer({ dest : 'uploads/' }); 

server.all('/example', function (req, res, next) { 
    var up = upload.single('photo') 
    up(req, res, function(err) { 
     console.log(req.body); // i can finally access req.body 
    }); 
} 

的問題,這一點,是不是所有的我的路線需要上傳的文件。我是否需要浪費CPU爲每條路線撥打upload.single()才能進入機體? upload.single('')最終沒有上傳任何文件,但它仍然花在主線程上的寶貴時間。

看起來,upload.single()等待回調,所以它可能沒有我做的那麼大,但我不喜歡在不需要時調用函數。

有沒有辦法打電話給upload.single(),還是我只是做了比這更大的交易呢?

回答

1

對於純文本的多聯表格,你.single().array()fields()

例如使用.array()

var multer = require('multer'); 
var upload = multer({ dest : 'uploads/' }); 

server.all('/example', upload.array(), function (req, res, next) { 
    console.log(req.body); 
}); 

可以使用任何的multer方法,這是它並不真正的問題你使用,只要它沒有參數調用Multer只會解析表單的文本字段給你,沒有文件

+0

謝謝,我不知道'.fields()'。我也做了一些不可思議的事情(不太清楚是什麼),這使得我不能訪問'req',如果我在路由調用中調用'upload.xxx()',所以我在回調中有了額外的邏輯。 – Matt

相關問題