2

我正在尝试使用强大来解析一个包含多个文件上传的表单,但不知何故,结果只显示一个文件。这是我直接从示例中复制的解析代码: 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 个文件来上传。这个中间件经过了很好的测试,我想我一定在某个地方犯了错误。

我做错了什么?谢谢!

4

3 回答 3

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] ] } }
于 2014-03-29T12:35:42.513 回答
1

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

  • 倍数:真

如果要绕过文件大小:

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

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

于 2017-11-18T23:02:55.400 回答
0

我切换到 node-multiparty,一个来自强大的表单解析器。上传的文件数正确。所以也许这是一个强大的错误。使用 node-multiparty 可以为您节省一些时间。

在此处输入图像描述

于 2014-03-29T11:27:41.710 回答