git地址:https://github.com/ankitrohatgi/tarballjs.git
在vue中的实际应用示例:
注意:因为tarball.js这个库仅支持浏览器,不支持NodeJS,如果非得在vue中使用的话,就得把tarball.js这个文件放在本地,然后在public ——》index.html中全局引用
<!-- 注意路径 -->
<script src="./tarball.js"></script>
// 读取ini文件内容
parseINIString(data) {
var regex = {
section: /^\s*\s*([^]*)\s*\]\s*$/,
param: /^\s*([\w\\.\-\\_]+)\s*=\s*(.*?)\s*$/,
comment: /^\s*;.*$/
};
var value = {};
var lines = data.split(/\r\n|\r|\n/);
var section = null;
lines.forEach(function(line) {
if (regex.comment.test(line)) {
return;
} else if (regex.param.test(line)) {
let match = line.match(regex.param);
if (section) {
value[section][match[1]] = match[2];
} else {
value[match[1]] = match[2];
}
} else if (regex.section.test(line)) {
let match = line.match(regex.section);
value[match[1]] = {};
section = match[1];
} else if (line.length == 0 && section) {
section = null;
}
});
return value;
},
// 解压缩文件,读取版本号
getVersion(tarFile) {
// tarFile 上传的 需要处理的文件对象
let tar = new tarball.TarReader();
tar.readFile(tarFile).then(
fileInfo => {
for (let i = 0; i < fileInfo.length; i++) {
// 遍历文件夹的文件
let file_name = fileInfo[i].name;
// 指定需要读取的某一文件 MANIFEST就是我要读取的文件的文件名
if (file_name == 'MANIFEST') {
// 读取文件的内容
let raw_data = tar.getTextFile(file_name);
// 读取到需要的版本号version
this.ver = this.parseINIString(raw_data).version;
// crypto模块的目的是为了提供通用的加密和哈希算法
var hash = crypto
.createHash('sha512')
.update(this.ver)
.digest('hex');
this.uploadFirmwareId = hash.substr(0, 8);
// console.log(this.uploadFirmwareId, 'hashhashhashhashhash');
}
}
},
err => {
console.log('error:', err);
return false;
}
);
},
补充crypto: 该模块支持nodejs 可以在需要使用的vue组件中引入即可。
// crypto模块的目的是为了提供通用的加密和哈希算法
var crypto = require('crypto');