我正在学习处理快递3中的文件上传。 module.exports.upload是我的路由处理程序,用于POST请求到' / image / upload' :
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:\n\n');
});
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>
console.log(&#39;内部表单解析回调&#39;); 永远不会执行,因为终端中没有记录任何内容。我使用开发设置,POST请求日志甚至没有记录到控制台。
顺便说一句,我将我的代码与示例here进行了比较。我相信我做得对,但我可能是错的。
在这种情况下似乎不会执行回调。出了什么问题?
谢谢!
答案 0 :(得分:0)
让我回答我的问题。上面的代码很好,但它不起作用的原因是因为我添加了
app.use(express.multipart());
app.js中的
然后添加
var multiparty = require('multiparty');
再次在控制器中,即image.js
这可能对你没有帮助,但是带走的是只需加载(需要(...))多方需要处理表单。不要使用app.use,请使用require,如本文档所示: