当我在Node.js中上传文件时,Formidable总是返回空字段和文件

基本上我想从本地计算机上传一个csv文件,并在后台parsing它来做必要的操作。 我在前端连接了csv文件。 检查了它不是空的。 但我无法在服务器中获取相同的内容。 有什么我失踪或做错的方式吗?

这是我迄今为止所尝试的。

前端代码:

<form id="myForm" method="POST" enctype="multipart/form-data" action='/testcsv' > <input type="file" id="file" /> <input type="submit" value="Submit"> </form> 

后端代码:

  var express = require('express'); var methodOverride = require('method-override'); var http = require('follow-redirects').http; var formidable = require('formidable'); var app = express(); const fs = require('fs'); app.use(methodOverride('_method')); var bodyParser = require('body-parser'); app.use(bodyParser.json()); // support json encoded bodies app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies app.post('/testcsv', requireLogin, function(req, res) { var form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files) { console.log(err); console.log(fields); console.log(files); }); }); 

日志输出:

  null {} {} 

这个问题是由前端代码引起的,与后端代码无关(强大)。

对于以下console.log语句:

 console.log(err); console.log(fields); console.log(files); 
  • errnull因为没有错误。
  • fields{}因为在表单中,所有input字段都是文件select器。 强大的fields只能表示简单的input字段,如<input type="text">
  • files{}因为表单中文件select器的name缺失。

为了获得预期的价值,下面是一个示例表单:

 <form id="myForm" method="POST" enctype="multipart/form-data" action='/testcsv' > <input type="text" name="testtext" /> <input type="file" id="file" name="testfile" /> <input type="submit" value="Submit"> </form> 

上述表单的console.log结果是:

 null { testtext: '....' } { testfile: File....}