我正在尝试使用formidable来解析具有多个文件上传的表单,但不知何故结果只显示一个文件。这是我直接从这里的例子中复制的解析代码: https://github.com/felixge/node-formidable
var form = new formidable.IncomingForm();
form.multiples = true; // per their documents
form.parse(req, function(err, fields, files) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload:\n\n');
res.end(util.inspect({fields: fields, files: files})); // files only contain one file,
// and files.length is undefined. It is not an array.
});
这是我的HTML:
<FORM action="/file"
enctype="multipart/form-data"
method="post">
<br>
What is your name?
<INPUT type="text" name="kk1_submit-name"><BR>
What files are you sending?
<INPUT type="file" multiple="multiple" name="uploads"><BR>
<INPUT type="submit" value="Upload">
</FORM>
输出json对象只有一个文件对象,而files.length是未定义的,即使我选择了5个要上传的文件。这个中间件经过了很好的测试,我想我必须在某处犯错。
我做错了什么?谢谢!
答案 0 :(得分:2)
formidable
模块开始支持一个月前上传多个文件。但formidable
中的npmjs.org
模块已于11个月前更新。因此,您需要手动安装最新的formidable
。
git clone git://github.com/felixge/node-formidable.git node_modules/formidable
现在再次运行应用程序,你应该得到正确的输出:
received upload:
{ fields: { title: '' },
files: { upload: [ [Object], [Object] ] } }
答案 1 :(得分:0)
我切换到node-multiparty,这是一个从强大的民间传来的表单解析器。上传的文件数是正确的。 所以也许这是一个令人生畏的错误。使用node-multiparty可以节省一些时间。
答案 2 :(得分:0)
自撰写本文时起,Formidable库已经发生了变化。您现在必须显式设置IncomingForm对象的一些参数,最值得注意的是:
如果您想绕过文件大小:
这使您可以正确使用最新版本的强大功能