记一次简单人员信息录入系统开发

2017-03-21  本文已影响69人  9540cfc28488

开发背景

某日接到大学某同学的一个活,他需要做一个人员信息的二维码,需要将人员基本信息还有N张扫描图片合成到一张图上。他的方法是简单粗暴的利用PS一个图一个图的合成(按照我的PS水平合成一张图的话大概耗时20分钟)。作为一个懂得粗浅前端的知识的我来说,这种方法显然是不可取的。综合需求,我决定使用express搭建一个简单的人员信息录入系
统然后展示出来,再用phantomjs自动截取图片......

express安装及基本目录结构

首先就是安装express了,首先你的电脑要安装过nodejsnpm
输入以下命令安装express以及项目目录初始化需要的 express generator
由于我们上传文件时需要用到express 的 multer中间件这里我们也给安装上

 npm install express --save
 npm install express-generator -g
 npm install multer --save

OK现在一切就绪,见证奇迹的时刻到了,当 当 当
再命令行里输入

  express -e 

你将会得到由express generator 自动创建的一个基础的express项目目录和文件(如下所示)

下面我们来分析一下每个文件的作用分别是什么。###

**index.js** **users.js**
可以看到这两个文件分别定义了当url分别输入http://xxxxx.xx/http:/xxxxxx.xxx/users的不同的路由行为。
而这两个路由文件的调用是在aap.js里发生的。 Paste_Image.png

进行实际的开发

var express = require('express'); // 引入express
var router = express.Router(); // 路由实例
var multer = require('multer'); // 引入multer中间件
// 初始化每次上传文件长度的flag值
var i = 0;
// 初始化将post传过来的req.body值缓存的对象
var getObj;

// 自定义multer上传文件的存储位置及文件名
var storage = multer.diskStorage({
    // 定义文件存储位置
    destination: 'public/upload',
    // 重命名文件(如果未制定multer将生成随机名且无后缀)
    filename: function (req, file, cb) {
        // 判断上次上传文件的flag值是否大与此次上传的文件长度
        if(i>req.files.length){
            i = 0;
        }
        // 重命名文件此处cb是callback函数的缩写
        cb(null, req.body.name+file.fieldname + i++ + '.jpg');
    }
});

// 应用multer的配置使其生效
var upload = multer({storage: storage});
// post 请求时的返回
router.post('/', upload.any()/* 此处是引入multer处理上传的文件any()指接收任何文件 */, function (req, res, next) {

    res.render('index', {obj: req.body});
    console.log(req.body);
    console.log(req.files);
    console.log(upload.single('pic_person'));
    next();
},function(req,res){
    getObj = req.body;
});
console.log(getObj);

// get请求时的返回
router.get('/',function(req,res,next){
    res.render('show',{obj : getObj});
});

// 导出路由
module.exports = router;

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.render('admin',{title:"admin"});
});

module.exports = router;

主要就是定义了路由处理函数

总结

文中没有贴出模板文件,因为这个项目本身比较简单,只是一个工具,这篇文章也只是个人的一个总结,如果有感兴趣的同学何以去我得github上看看具体的代码。
github:alixwang

上一篇下一篇

猜你喜欢

热点阅读