目前需要下载一个比较大的资源,资源大小可能比机器的内存还要大,而且提供资源的服务器无法被控制。
因为资源需要提供用户凭证(请求字段中的 token)才能获取,使用 a 标签发现不能带上 token。所以试用了 fetch 的方式,但是 fetch 方式要触发下载可能需要把整个资源先下载到内存中,然后再通过 a 标签触发下载到磁盘。这种方式可能会导致内存不够,而且效率上也很低。
请问一下有什么其他方法能更好地下载这个资源,不限于使用浏览器扩展
服务器是第三方服务器,所以无法修改认证的方式,比如把 token 放在 query 或者是 cookie 中,因为这些方式需要服务器配合。
目前尝试一下使用 File System API,使用 fetch 的 body 流,获取一点数据就通过 FileSystemWritableFileStream 写入到系统文件中,主要看一下能否实现断点续传的功能
把 token 放到 query 里,服务器上校验 query 即可,不一定非要用 fetch。
如果担心 token 放到 query 里不安全,也可以写个函数,拿长期 token 生成一次性的临时 token,下载启动之后就作废即可。