CSV 到 JSON 使用文件上传

CSV to JSON using file upload

我想使用文件上传将 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');

您只需从请求中提取正文即可。 bodyparser https://github.com/expressjs/body-parser 是一个很好的工具。

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

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

周杰伦

如果你有小的 csv 文件,你可以使用 multer 的内存。

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);
     }); 
});