问答

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

作者:admin 2021-06-24 我要评论

后端传回的是arrayBuffer. 目前的下载方式是常见的转blob,然后直接使用浏览器下载,代码如下: // res.data是后端传回的数据let blob = new Blob([res.data], {typ...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

后端传回的是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.如果不能,能否在用户设置了迅雷下载的情况下,使用浏览器自带的下载?

###

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

###

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

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 请问后端传回的二进制文件流,如何使用

    请问后端传回的二进制文件流,如何使用

  • lottie-web的图片要放在哪里才能被json

    lottie-web的图片要放在哪里才能被json

  • was做的集群, 副节点已经启动,为什么

    was做的集群, 副节点已经启动,为什么

  • 扫码登录手机号绑定到了意外的新号上了

    扫码登录手机号绑定到了意外的新号上了

腾讯云代理商
海外云服务器