多方形式解析中的回调似乎不执行(Express 3)



我正在学习处理Express 3中的文件上传。module.exports.upload是我对"/image/upload"的POST请求的路由处理程序:

var multiparty = require('multiparty');
module.exports.uploadPage = function (req, res) {
    res.render('image/image', {file_content: null });
}
module.exports.upload = function (req, res) {
    var form = new multiparty.Form();
    form.parse(req, function(err, fields, files){
        console.log('inside form parsing call back');
        res.writeHead(200, {'content-type': 'text/plain'});
        res.end('received upload:nn');
    });
    if(req.method == 'GET') res.render('image/image');
}

这是我的表格:

<form action="/image/upload" enctype="multipart/form-data" method="post">
    <input type="file" name="thumbnail" multiple="multiple" />
    <input type="submit"/>
</form>

控制台.log('内部表单解析回调'); 永远不会执行,因为终端中没有记录任何内容。我正在使用开发设置,POST 请求日志甚至没有记录到控制台。

顺便说一句,我将我的代码与这里的示例进行了比较。我相信我做对了,但我可能是错的。

在这种情况下,回调似乎没有执行。哪里出了问题?

谢谢!

让我回答我的问题。上面的代码很好,但它不起作用的原因是因为我添加了

app.use(express.multipart());

在应用中.js

然后添加

var multiparty = require('multiparty');

再次在控制器中,即图像.js

这可能对您没有帮助,但要点是,只有在需要处理表单的地方加载(require(...))多方。不要使用 app.use,请使用 require,因为本文档建议:

GitHub 上的多方

最新更新