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('上傳成功')
}
})
},