使用文件上传

时间:2016-01-13 19:41:17

标签: node.js npm multer

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

我试过过多,

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

2 个答案:

答案 0 :(得分:2)

如果你有小的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);
     }); 
});

答案 1 :(得分:1)

您只需从请求中提取一个正文。 bodyparser https://github.com/expressjs/body-parser是执行此操作的绝佳工具。

首先,安装并要求库。然后,创建一个text bodysarser(可能最适合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