node+express+multer+zbarimg实现图片上传识别二维码

环境windows,这里比较坑的原因是找识别二维码的工具,只知道了python下的zbarimg可以用,而zbarimg又是python2.6x的,找了半天才找到一个支持python2.7x的,不过是windows的exe文件,下载地址在这里 http://download.csdn.net/detail/cranes1224/9788139,需要python2.7的环境(也就是你的电脑需要安装python2.7,python3.x的版本是不行的),下载后在选择安装路径的时候选择安装在python2.7的安装路径,安装完成在python2.7的目录下就可以看到zbarimg.exe,然后cd到对应目录,zbarimg -q E:\python\zbarImg\test.png,test.png二维码就被识别出来显示在窗口了! 备注资源来自GitHub,地址:https://github.com/jacobvalenta/zbar-py27-msi,若是访问GitHub没障碍的话,也可以从GitHub上面下载!

python2.7和zbarimg,接着要准备node和express,以及multer,相关安装不熟悉请自行查找对应的参考文章或官方文档!

都准备好了,直接上代码,服务端代码:

var fs = require('fs');
var express = require('express');
var multer  = require('multer');

var app = express();
var exec = require('child_process').exec;
//创建文件夹函数
var createFolder = function(folder){
    try{
        fs.accessSync(folder); 
    }catch(e){
        fs.mkdirSync(folder);
    }  
};
var uploadFolder = 'upload/';

var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, uploadFolder);    // 保存的路径,备注:需要自己创建
    },
    filename: function (req, file, cb) {
        // 将保存文件名设置为 字段名 + 时间戳,比如 logo-1478521468943
        cb(null, file.originalname);  
    }
});

var upload = multer({storage : storage });

app.get('/zbarcam',function(req,res,next){
  var form = fs.readFileSync('htmlViews/zbarcam.html', {encoding: 'utf8'});
    res.send(form);
});

app.post('/upload', upload.single('logo'), function(req, res, next){
    var file = req.file;
    var cmdStr = 'C:\\Python27\\zbarimg E:\\express\\myapp\\upload\\'+file.originalname; //此处请根据自己的实际情况来;
    exec(cmdStr, function(err,stdout,stderr){
      if(err) {
          res.send('get weather api error:'+stderr);
      } else {
        res.send(stdout)
      }
  })
});

app.listen(3001)

上述代码用到的zbarcam.html的代码:

<form action="/upload" method="post" enctype="multipart/form-data">
    <h2>单图上传</h2>
    <input type="file" name="logo">
    <input type="submit" value="提交">
</form>

参考文章:http://www.cnblogs.com/chyingp/p/express-multer-file-upload.html

感谢看完指鹤文章,希望指鹤的文章对您有所帮助。

闲暇时,指鹤喜欢写一些文章,部分发表在了豆瓣,若是您对此感兴趣,您可以点击下面连接支持下指鹤,指鹤在此表示感谢了

绝命笔记 一封匿名信引发的追寻 迷案追凶 量子危机

Leave a Reply