无法在heroku上使用Node.js进行多个名称字段POST

时间:2014-06-13 03:39:49

标签: javascript node.js forms heroku

我正在使用Node.js开发一个Web应用程序。我用enctype="multipart/form-data"写了一个隐藏的表单来上传一个文件和一些文本,但它的行为奇怪,我只能在he​​rokuapp服务器上获得一个字段(表单中的名称)而不是我想要的多个字段。

客户端代码如下:

<form action="/target" method="post" enctype="multipart/form-data">
   <input hidden type="file" name="file" id="file">
   <input hidden type="text" name="A" id="A" value="AAA">
   <input hidden type="text" name="B" id="B" value="BBB">
   <input hidden type="text" name="C" id="C" value="CCC">
   <input hidden type="submit" value="Submit">
</form>

服务器端代码如下:

app.post('/target', function(req, res, next) {
    console.log(req.files.file.path);
    console.log(req.body.A);
    console.log(req.body.B);
    console.log(req.body.C);
    res.end();
})

我只能获得req.body.C其他2个剩余的undefined,但是当我在localhost上运行时它完全正常。
我使用multer来处理配置的多部分表单:

app.use(multer({dest:'./public/uploads/'}))

2 个答案:

答案 0 :(得分:0)

请使用环境变量NODE_ENV=production在本地运行您的服务器。这将运行您的服务器,就像它在生产中运行一样。然后尝试重现此问题。

另外需要考虑的是您正在使用的Express版本。 Express 4不再带有body parser中间件;你必须自己带来它。

道歉,提出建议作为答案。我不具备允许我发表评论所需的声誉。

答案 1 :(得分:0)

Heroku有一个只读文件系统。您可以编写的目录是./tmp或./log。试试吧,祝你好运!