加载中...
Javascript
Promise
Proxy 和 Reflect
垃圾回收
尾调用和尾递归
数据类型
模块
闭包
Typescript
最佳实践
模板字面量类型
泛型
性能优化
首屏加载优化
最佳实践
CSS最佳实践
Javascript
React
git 实践
前端组件设计原则
通用工程实践
构建工具
Webpack
Loader
Plugin
分包
最佳实践
构建优化
Vite
框架
React
Fiber
Hooks
react-router
setState
渲染原理
HOC、Hooks、Mixin
Redux
spa 路由原理
虚拟 Dom 与 diff
AST 抽象语法树
AST抽象语法树
demo
事件循环
单元测试
图标方案
微前端
文件上传&下载
柯里化
设计稿多端适配方案
关于
文件上传&下载
下载流式文件
axios 请求配置 responseType 设为 blob
使用开源工具
FileSaver
进行保存
判断文件类型
使用开源工具:
https://github.com/sindresorhus/file-type
input 元素 accept 属性只根据文件后缀名进行拦截,用户手动修改可以绕过
可以通过读取文件中的二进制数据来识别正确的文件类型:
https://juejin.cn/post/6971935704938971173
对于某一些类型的文件,起始几个字节内容都是固定的,根据这几个字节的内容可以判断文件类型,可通过 FileReader API 来读取
实现大文件并发上传
参考:
https://mp.weixin.qq.com/s/-iSpCMaLruerHv7717P0Wg
并发控制结合 Blob.slice
获取待上传文件
计算文件 md5 值
发起 get 请求判断文件是否已存在
不存在则执行上传,并发上传分块,并通知后端
实现大文件并行下载
参考:
https://mp.weixin.qq.com/s?__biz=MzI2MjcxNTQ0Nw==&mid=2247490849&idx=1&sn=9d062c04baeb629d9b69a9fb4e7c3599&scene=21
使用 http 范围请求的特性
先发送一个 head 类型的请求,从响应头中读取 Content-Length,获取文件大小
参考
https://juejin.cn/post/6980142557066067982
https://juejin.cn/post/6989413354628448264
文件上传&下载
下载流式文件
判断文件类型
实现大文件并发上传
实现大文件并行下载
参考