我正在学习处理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 上的多方