️文件下载

1. 服务器设置附件响应头

这种方式会直接产生下载提示,用户选择了下载存放位置后就不需要管它了,表现为响应快

这样文件的下载会直接,不会有“点击下载还需要等待一端时间才会弹窗下载位置选择”的情况

'Content-Disposition': 'attachment; filename=example.png',

2. 客户端设置a标签download

无法设置请求头,如果是通过token验证是否合法,那么单纯的这种方式是不行的,如果是cookie验证或者不需要验证用户信息那么可以采用这种方式

**验证信息用的Token,**这种方式通常是应用在不需要携带登录信息的场景,如果需要登录信息(Token)就需要使用到xhr或者fetch,设置请求头,拿到文件流,构造本地URL然后通过a标签模拟点击下载。
另外,还可以单独的对下载接口设置cookie来验证,cookie在同源下可以默认携带。方法是发起一个请求,表示需要下载,然后服务端返回头包含Set-Cookie,此时点击a标签发起请求,会携带cookie。

3. AJAX获取文件流

拿到文件流,构造本地URL,赋值a标签src,模拟点击下载

4. 分片下载

分片下载,和分片上传类似,好处是可以断网后恢复继续下载(前端需要将之前已经下载的载本地保存起来,如保存在indexDB中),可以暂停下载等等

关键点是需要配置请求头 Range: [一个字节范围]配置响应头Content-Range:[一个字节范围],这样每次下载拿到的就是配置的这个字节段,最后将所有拿到的字节端组合起来就是一个完整的文件。
另外还可以分两种模式:单线程下载、多线程下载

  1. 单线程下载:下载速度不会提升,但可以续传
  2. 多线程下载:额外增加了下载速度的优势
    • HTTP1.1,最多可以6个并发请求(不同浏览器可能不同)
    • HTTP2.0,最多并发请求没有限制,但也不是越多越好,请求越多开销也会增加,反而影响速度

以上简单描述下载方法有哪些,具体方式可以🔎。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值