二进制流文件导出
场景需求
开发后台管理系统时,难免会涉及到文件的上传和文件的导出。现在前端上传文件主要采用“二进制文件流”的形式来上传文件。上传主要方式有以下方式:
- 前端直接传递云存储或者自身服务器,来获取上传文件的云端绝对地址;
- 前端借助后台来实现文件的存储和上传,然后经后台处理来返回文件存储路径。
上传文件也根据文件格式进行分类存储或者在上传前进行文件的大小和格式的校验处理,以防乱传递垃圾文件消耗云盘存储空间和浪费流量等。
文件格式
后台管理系统一般用作处理文档数据相关,导出的数据大致分为以下几类:
- 用于数据统计的Excel文件,主流文件格式为:.xls 和 .xlsx;
- 用于文档通知的Word文件,主流文件格式为:.doc和 .docx;
- 用于幻灯片的PowerPoint文件,主流文件格式为:.ppt 和 .pptx;
文件导出
-
从后台 API 获取二进制流文件地址,进行处理;
-
配置前端请求方式,以 blob 的方式请求获取文件流;
-
通过 URL.createObjectURL() 静态方法创建一个DOMString;
-
动态创建用于文件下载的 a 标签,并赋值 herf 和 download 属性,并触发该标签的点击事件;
-
通过 URL.revokeObjectURL() 静态方法来释放之前通过 URL.createObjectURL() 创建的 URL 对象。
代码示例
代码示例
🚐 注:文件后缀名根据要求进行定义。
代码示例
🐻 注:上述“获取 headers 中的文件名”为在请求接口时后台携带的文件名,若“无”则需自定义文件名。
Axios blob 请求导出示例
基于 axios responseType: blob 的极简导出写法。
使用场景
文件的导入导出。
节流函数 Debounce
代码示例