2017-08-26 185 views
1

基本上我想从本地计算机上传一个csv文件并在后端解析它以执行所需的操作。我在前端连接了csv文件。检查了它不是空的。但我无法在服务器中获取相同的内容。 有什么我错过或以错误的方式做?当我上传Node.js中的文件时,Formidable总是返回空字段和文件

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

前端代码:

<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 
{} 
{} 
+0

你缺少的文件输入名称属性 –

回答

0

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

对于下面的console.log语句:

console.log(err); 
console.log(fields); 
console.log(files); 
  • errnull因为没有错误。
  • fields{},因为在表单中,所有输入字段都是文件选择器。在强大的fields中只显示明文输入字段,如<input type="text">
  • files{},因为表格中文件选择器的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....} 
相关问题