前言
需求大概是需要上传一个.zip文件,需要分析文件是否为空文件夹,以及文件夹里的文件是否符合标准,这块是想让前端这边做拦截,不符合要求就上传失败
实现方法
1.下包
npm i jszip
2.在需要的地方引入(命名可自定义)
import JSZip from 'jszip'
3.找到文件上传前的钩子
4.创建实例,并将文件传入构造函数中
let new_zip = new JSZip() // 获取实列
const resfile= await new_zip.loadAsync(file) // 读取文件,拿到返回值
console.log('我看看JSZip面的参数',resfile)
返回值如下
5.上传文件后会触发这里的钩子(可以根据返回值去做处理)
需要注意的是:这里我将校验封装成prosime所以钩子中在返回值应该处理一下为返回被reject的的promise
判断方法:
我看到网上有用dir判断是否为空文件的,但是我自己试了下,感觉这个dir参数是判断是否是文件夹的,和是否为空文件夹无关(个人见解)
最终我还是选择用实例返回的files的长度判断是否为空文件(因为如果有其它文件,files里面都会有返回到最深层级,有点像vue-router里面的getRouter()的返回值)