ajax上传excel文件 express处理数据保存导入数据(实用后台直接批量导入不用一个一个数据添加)

<input type="file" name="file" id="file"  onchange="uploadFile(this)"/>
<body>
    <script>
var file = document.querySelector('file');
var upload = document.querySelector('upload');
var xhr = new XMLHttpRequest();
// 点击上传
function uploadFile(event) {
 var formData = new FormData();
 formData.append('test-upload', event.files[0]);
 xhr.onload = uploadSuccess;
 xhr.open('post', '/fileUpload', true);
 xhr.send(formData);
}
// 成功上传
function uploadSuccess(event) {
 if (xhr.readyState === 4) {
 console.log(xhr.responseText);
 }
}
通宵了代码较乱先不格式化了,
var express = require('express'); //引入express
var app = express(); // 创建实例app
var fs = require("fs"); //引入fs,fs 是node中一个文件操作模块,包括文件创建,删除,查询,读取,写入。

var bodyParser = require('body-parser'); // 这个模块是获取post请求传过来的数据。
var multer = require('multer'); //multer - node.js 中间件,用于处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。
const path = require('path')
app.use(bodyParser.urlencoded({ extended: false })); // 判断请求体是不是json,不是的话把请求体转化为对象

app.use('/static', express.static('public'))// 静态资源地址
app.use(multer({ dest: './public/' }).any())// 通过配置multer的dest属性, 将文件储存在项目下的tmp文件中
//workbook 对象,指的是整份 Excel 文档。我们在使用 js-xlsx 读取 Excel 文档之后就会获得 workbook 对象。
let xlsxrd = require('node-xlsx');
var mysql = require('mysql');
var connection = mysql.createConnection({
  host: '',
  user: 'root',
  password: '',
  database: 'test'
});
connection.connect();
app.get('/index.html', function (req, res) {
  res.sendFile(__dirname + "/index.tml");

})
app.post('/fileUpload', function (req, res) {// 上传接口
  let old = req.files[0].path //获取path: 'public\\upload\\0f625978d5d1a783b12e149718f8b634',
  let name = req.files[0].path + path.parse(req.files[0].originalname).ext
  fs.renameSync(old, './public/' + req.files[0].originalname)
  let excelFilePath = './public/' + req.files[0].originalname;
  // 读取excel中所有工作表的数据
  let list = xlsxrd.parse(excelFilePath);
  // 获取excel中第一个工作表的数据
  let data = list[0].data.splice(0, 1);
  var dats = list[0].data
  dats.forEach((item, index) => {
    connection.query('insert into user (name,qq,age) values("' + item[0] + '","' + item[1] + '","' + item[2] + '")', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results[0]);
    });
    console.log(item);
  })
  connection.end();
  fs.unlinkSync('./public/' + req.files[0].originalname);
  res.json({//返回保存的图片名称
    'imgpath': name
  });
})

var server = app.listen(8081, function () {
})

ajax上传excel文件 express处理数据保存导入数据(实用后台直接批量导入不用一个一个数据添加)_第1张图片

ajax上传excel文件 express处理数据保存导入数据(实用后台直接批量导入不用一个一个数据添加)_第2张图片

你可能感兴趣的:(js,ts,css,html,node.js)