请问后端传回的二进制文件流,如何使用迅雷下载?

后端传回的是arrayBuffer. 目前的下载方式是常见的转blob,然后直接使用浏览器下载,代码如下:

// res.data是后端传回的数据
let blob = new Blob([res.data], {type: 'application/vnd.ms-excel'})
let url = window.URL.createObjectURL(blob)
window.open(url)

这时候会打开浏览器的默认下载;
但是在用户使用如qq浏览器,并把下载方式设置为迅雷下载之后就无效了;

如果使用迅雷的js-sdk时会唤起迅雷,但是无法下载;因为window.URL.createObjectURL(blob)创建的是一个指向内存的映射并不是一个真正的下载地址;

所以请问如果用户将下载设置成了迅雷的方式:
1.前端能否实现唤起迅雷下载?
2.如果不能,能否在用户设置了迅雷下载的情况下,使用浏览器自带的下载?

阅读 3.9k
2 个回答

这样做的意义是啥呢?
这种情况下,后段这样返回的数据,不能分段下载,也就没有多队列下载的必要,那为何还要迅雷下载呢?

迅雷应该是不支持直接处理内存中的数据流的
所以想用迅雷下载只能直接去访问文件地址,即我这里返回res.data的这个接口地址,并将这个地址所在的链接转化为迅雷支持的链接.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题