【发布时间】:2017-08-12 18:32:02
【问题描述】:
我是 Angular JS 和 Node Js 的新手。我想达到一个要求。我有一个带有上传按钮的页面,我正在上传 csv 文件并从 CSV 文件中读取所有记录并发送到服务器端(节点 js)。
在 Node js 中会从 angular 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...'); });
【问题讨论】:
-
您要求设计应用程序的原型(输入不足)。请发布您的代码。那么你可能会得到帮助。
-
嗨,您能检查我的代码并建议我如何实现该要求。谢谢
-
我不知道 Node JS,但在 AngularJS 中使用链接 stackoverflow.com/questions/26353676/… 读取 csv 文件,然后使用 github.com/bahaaldine/angular-csv-import 将数据转换为 JSON,然后最后编写 Angular $http 服务发布这个 JSON 数据到服务器。