excel数据读取 加密 批量生产二维码
日期: 2018-08-08 浏览量: 3220
应用场景, 要批量生产一批二维码,二维码包含产品相关信息,扫描二维码可以获取相关产品信息
实现方法demo:
const fs = require('fs')
const crypto = require('crypto')
const xlsx = require('node-xlsx')
const qr = require('qr-image')
const base_url = 'https://baidu.com' //业务实现地址 写你自己的 写百度不好使
const secret_key = 'HFJK34Fb' //数据密码 key 自己动手改下吧 记得 仅支持8位字符
const file = './2018-7-7.xlsx' //excel 文件 数据源
// 读取excel文件
let read_file = async (file) => {
let data = await xlsx.parse(file)
// 其实可以多个的 自己实现下吧
if (data.length > 1) {
throw new Error('execl表只能有一页数据,请手动拆分')
}
data = data[0]
let name = data.name
data.data.shift() //删除第一条头信息
let dataObj = data.data.map((item) => {
let number, pwd, retailer, price, goodInfo
[number, pwd, retailer, price, goodInfo] = item //es6 解构赋值
return {
number: number,
pwd: pwd,
retailer: retailer,
price: price,
goodInfo: goodInfo
}
})
return { name : name, data: dataObj }
} // 数据加密url拼接
let encrypt_data = async (data) => {
let urls = data.map((item)=>{
//数据加密
let param = JSON.stringify(item)
param = des_encrypt(param, secret_key) // 如果为了安全 还可以做签名 怎么玩你说了算
return `${base_url}?param=${param}`
})
return urls
} //批量处理生产二维码
let create_QR_code = async (file) => {
let data = await read_file(file)
let urls = await encrypt_data(data.data)
//创建目录
let dir_path = `${__dirname}/${data.name}`
if(!fs.existsSync(dir_path)){
fs.mkdirSync(dir_path, '777'); //创建目录 path 路径 '777' 目录权限
}
//批量生产二维码
for(let i=0; i< urls.length; i++){
let file_name = data.data[i].number //文件名
let qr_svg = qr.image(urls[i], {type: 'png'}) // 参数 : 内容 二维码格式
qr_svg.pipe(fs.createWriteStream(`${dir_path}/${file_name}.png`)); //路径
}
}
create_QR_code(file)
/*** * des 加密方法 后续会专门更新一篇加解密文章
* @param text 加密内容
* @param key 加密key 必须8位
*/ function des_encrypt(text, key){
let cipher = crypto.createCipheriv("des-ecb", new Buffer(key), new Buffer(0));
let encrypt = cipher.update(text, 'utf8', 'base64');
encrypt += cipher.final('base64');
return encrypt;
}
人活着,其实就是一种心态,你若觉得快乐,幸福无处不在;你为自己悲鸣,世界必将灰暗。
阅读排行
最新文章
联系方式
- 邮箱:m18811126599@163.com
- QQ:896956692