2017-08-26 46 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....} 
相關問題