强大只能处理一个文件?

时间:2014-03-29 11:06:37

标签: node.js formidable

我正在尝试使用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个要上传的文件。这个中间件经过了很好的测试,我想我必须在某处犯错。

我做错了什么?谢谢!

3 个答案:

答案 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可以节省一些时间。

enter image description here

答案 2 :(得分:0)

自撰写本文时起,Formidable库已经发生了变化。您现在必须显式设置IncomingForm对象的一些参数,最值得注意的是:

  • 倍数:真

如果您想绕过文件大小:

  • maxFileSize :(大约以字节为单位(不是maxFieldsSize))

这使您可以正确使用最新版本的强大功能