2016-01-13 40 views
1

我想使用文件上传将CSV文件转换为JSON数组对象。使用文件上传将CSV转换为JSON

我已经试过multer,

module.exports = function(express, app, upload){ 
    var router = express.Router(); 
    var util = require('util'); 

    router.get('/',function(req,res){ 
     res.send(200); 
    }); 
    router.post('/csv', upload,function(req,res){ 
     //How to get file contents ? 
     res.send('/dashboard'); 
    }); 
    app.use('/upload',router); 
}; 

其中上传,

var upload = multer({ storage: storage }).single('csvfile'); 

回答

1

您只需从请求提取体。 bodyparserhttps://github.com/expressjs/body-parser是一个很好的工具。

首先,安装并需要库。然后,创建一个text bodyparser(可能为csv用例最适合),并将其注册为一个中间件:

app.use(bodyParser.json()) // app being 'var app = express()' server 

最后:但是

router.post('/csv', upload,function(req,res){ 
    console.log(req.body) // req.body should be populated by request body 
    res.send('/dashboard'); 
}); 

注意,这bodyparser不适合多身体。如果这是你的情况,请使用https://github.com/felixge/node-formidable

1

Jay。

如果你有小的csv文件,你可以使用内存作为分割器。

var upload = multer({ inMemory: true}).single('csvfile'); 

并在此之后,你必须将CSV

router.post('/csv', upload, function(req,res){ 
    var csvString = req.files.csvfile.buffer.toString() 
    converter.fromString(csvString, function(err,result){ 
     if(err)return res.send("ERR") 
     res.send(result); 
    }); 
});