使用Angular js,Node Js上传CSV文件并将数据保存在MySQL DB中

时间:2017-03-21 07:58:52

标签: mysql angularjs node.js

我是Angular JS和Node Js的新手。我想达到一个要求。我有一个带上传按钮的页面,我正在上传csv文件并从CSV文件中读取所有记录并发送到服务器端(节点js)。

在Node js中,将从角度Js获取数据并保存到MySQL数据库。我该如何实现这个要求?有人可以帮我这个要求。 提前谢谢。

 Below is my **Angular Code:**<html><head><meta charset="UTF-8">    <title>File Upload Home</title></head><body ng-app = "myApp"><div ng-controller = "myCtrl"><table align="center" ><tr><td>Choose .csv file</td>
            <td><input type="file" name="readCsvFile" id="readCsvFile" accept=".csv"> </td><td><input type="button" value="Upload" ng-click="uploadCsvFile()"></td></tr> </table></div><script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> <script>  var myApp = angular.module('myApp', []);   myApp.controller('myCtrl', ['$scope', '$http', function($scope, $http){    
$scope.uploadCsvFile = function() {     
    $http.post('/').success($scope.processData);
    /* $http({
      method: 'POST',
      url: '/',
      headers: {'Content-Type': undefined}
   }).success($scope.processData); */
};   $scope.processData = function(csv){  var lines=csv.split("\n");  var result = [];  var headerscsv=lines[0].split(";");  for(var i=1;i<lines.length;i++){
  var obj = {};
  var currentline=lines[i].split(",");
  for(var j=0;j<headerscsv.length;j++){
      obj[headerscsv[j]] = currentline[j];
  }
  result.push(obj);  }
return JSON.stringify(result); //JSON  }    }]); </script> </body> </html>

**Node Js Code:**var express = require('express');var bodyParser =require('body-parser');var app = express();var mysql = require('mysql');//var expressValidator = require('express-validator');app.use(bodyParser.urlencoded({extended: true }));app.use(bodyParser.json({ type: '*/*' }));var connection =mysql.createConnection({ host: 'localhost', user: '', password: '', database: 'dbname'});connection.connect(function(err){ if(err){ console.log('Database connection error'); }else{ console.log('Database connection successful'); }}); app.post('/', function(req, res) {var jsondata = JSON.parse(JSON.stringify(req.body));var values = [];for(var i=0; i<jsondata.length; i++){ values.push([jsondata[i].eno,jsondata[i].name,jsondata[i].age]);}connection.query('INSERT INTO members (eno, name, age) VALUES ?', [values], function(err,result) { if(err) { res.send('Error'); } else { res.send('Success'); }});});app.use(express.static('static'));var server =app.listen(3000,function(){ console.log('running on 3000...'); });

1 个答案:

答案 0 :(得分:1)

如果您正在使用带有Node.js和Angular JS的MYSql

我认为您可以做的最简单的实现是:

  1. 在HTML / AngularJS中创建最简单的表单,并使用此模块从浏览器https://github.com/danialfarid/ng-file-upload启用文件上传
  2. 在Node中创建路由并使用multer获取上传的文件并将其保存在您的服务器上。 https://www.npmjs.com/package/multer
  3. 使用节点模块csvtojson将csv数据/文件转换为json数据以便轻松使用https://www.npmjs.com/package/csvtojson
  4. 使用Sequelize ORM建立与MySQL的连接并插入数据。它使您能够使用json格式来处理SQL数据库所以您不需要编写RAW查询。 https://www.npmjs.com/package/sequelize