electron+vue中使用nodeJs的fs模块以及上传文件

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