import Form from "form-data/lib/form_data" //在electron上传文件中添加node form-data模块
const fs = require('fs');
const path = require('path');
const archiver = require('archiver');
秒级时间戳、毫秒级时间戳、日期对象 格式化时间
dateFormat(date, fmt = 'yyyy-MM-dd hh:mm:ss') {
let type = Object.prototype.toString.call(date);
if (type !== '[object Number]' && type !== '[object Date]') return;
if (type === '[object Number]') date = new Date(Number(date).toString().length === 10 ? date * 1000 : date);
let o = {
'M+': date.getMonth() + 1, //月份
'd+': date.getDate(), //日
'h+': date.getHours(), //小时
'm+': date.getMinutes(), //分
's+': date.getSeconds(), //秒
'q+': Math.floor((date.getMonth() + 3) / 3), //季度
S: date.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
for (let k in o) if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
return fmt;
}
定义变量
fileName: '', //文件名称C
dirName:'C:\swRtcSdkLog',//总路径
todayTime:dateFormat(new Date(), 'yyyy-MM-dd'),//今天时间
spaceTime: 18000000,//间隔时间
创建文件夹
createFile() {
fs.exists(this.dirName, exists => {
if (!exists) {
fs.mkdirSync(this.dirName);
}
// 文件夹存在,创建文件
this.todayTime = dateFormat(new Date(), 'yyyy-MM-dd');
this.fileName = path.join(this.dirName, `\${this.todayTime}_${this.lesson_id}_lesson.log`);
this.createLogFile();
});
},
创建文件
createLogFile() {
fs.access(this.fileName, fs.constants.F_OK, err => {
if (err) {
fs.writeFile(this.fileName, '', 'utf8', err => {
if (err) {
console.warn('创建文件失败');
} else {
console.warn('创建文件成功');
//写入日志或者文件
}
});
} else {
console.log('文件存在');
//写入日志或者文件
}
});
},
遍历日志文件夹删除前10小时的文件
foldForEach(){
let dirList = fs.readdirSync(this.dirName);
dirList.forEach((item,index)=>{
console.log(item);
let statObj = fs.statSync(`${this.dirName}\${item}`);
if(statObj.isDirectory()){
this.removeDir(item);
}else{
const time = new Date(item.split('_')[0]).getTime();
const dateTime = new Date().getTime();
if(dateTime-time >= this.spaceTime && item.split('.')[1] != 'zip'){
fs.unlinkSync(`${this.dirName}\${item}`);
}
}
})
},
删除文件夹
removeDir(dir){
let dirList = fs.readdirSync(`${this.dirName}\${dir}`);
console.log(dir)
for(let i = 0; i<dirList.length;i++){
fs.unlinkSync(`${this.dirName}\${dir}\${dirList[i]}`);
}
fs.rmdirSync(`${this.dirName}\${dir}`);
},
将多个文件压缩成一个压缩包
dirToZip(){
let dirList = fs.readdirSync(this.dirName);
const output = fs.createWriteStream(`${this.dirName}\xxx.zip`);
const archive = archiver('zip');
archive.pipe(output);
dirList.forEach(item=>{
if(item.split('.')[1] != 'zip'){
// console.error(`${this.dirName}\${item}`)
archive.append(fs.createReadStream(`${this.dirName}\${item}`),{name:`${this.dirName}\${item}`})
}
})
archive.finalize();
output.on('close',()=>{
this.uploadFile();
})
},
上传文件
uploadFile(e) {
const form = new Form();
const fileStream = fs.createReadStream(`${this.dirName}\xxxx.zip`);
form.append('file',fileStream)
form.submit('接口',(err,res)=>{
if(res.statusCode == 200){
console.log('上传成功')
}
})
},