美文网首页
前端字节流下载文件

前端字节流下载文件

作者: 雨落倾城夏微凉_e861 | 来源:发表于2020-07-17 16:02 被阅读0次

在之前的项目中处理下载一般都是后端直接给个链接,放a标签上写死就行了。再麻烦一点的顶多就是通过请求获取到链接再加到a标签上。这两种方式对于我们前端来说都是见的比较多的情况。

最近在做react项目时有个需求是可以点击同时下载多个文件,后端的童鞋告诉我,他会直接返回字节流请求后直接就能自动下载。之前还真没处理过这种下载方式,所以天真的相信了。我通过axios请求成功后发现并没有浏览器并没有直接下载文件,显然是需要前端做特殊处理的。

查阅了一番资料,最终解决了这个问题,怕自己忘了记录到简书上:

function downLoadFiles(name, data) {
        var urlObject = window.URL;  //window对象的URL对象是专门用来将blob或者file读取成一个url的。
        var export_blob = new Blob([data]); //代表二进制类型的大对象,就是Blob对象是二进制数据
        var save_link = document.createElement('a');//创建a标签
        save_link.href = urlObject.createObjectURL(export_blob); //通过URL.createObjectURL(blob)可以获取当前文件的一个内存URL
        //download是 HTML5 中<a>标签新增的一个属性,此属性会强制触发下载操作,指示浏览器下载 URL 而不是导航到它,并提示用户将其保存为本地文件
        save_link.download = name;
        save_link.click();//触发a标签单击
    }

name可以传入我们下载文件的名字,
data后台传给我们的字节流数据
没有测试浏览器的兼容性感兴趣的童鞋可以自己测一测。
当然这只是我们完成了下载的第一步,第二步我们需要在请求方法中添加响应类型responseType:blob,这个也是必须添加的不然还是不能正常下载。

xhr.responseType="blob"; //字节流
axios.get("url", {
    params: {
      //传入的参数
    },
    responseType: "blob"
  });

以上我们便完成了字节流的下载处理。

相关文章

  • 前端字节流下载文件

    在之前的项目中处理下载一般都是后端直接给个链接,放a标签上写死就行了。再麻烦一点的顶多就是通过请求获取到链接再加到...

  • 字节流下载文件

    1,一般下载文件后端给个URL直接调用window.open(url)或者window.location.href...

  • vue项目实现导入/导出Excel

    前端方案 首先安装依赖包 前端实现方案 后端处理导出 前端通过字节流或者url实现导出,字节流方式导出的文件方式可...

  • 前端实现文件流下载【axios】

    以下是一个拿到流数据后的下载操作代码实现 axios遇到流下载异常返回JSON时的处理

  • 前端下载文件成功,但打不开

    前端通过后端返回的文件流下载excel文件方法如下: 但是我遇到一个问题:就是下载文件成功了但是打不开,一看是文件...

  • js文件下载

    1.文件流下载 根据后台接口文件流下载 调用 2.文件地址下载 根据文件地址下载文件 调用 3.base64流下载...

  • java字节码解读

    什么是字节码文件 字节码文件就是以字节(1字节=8位)为最小存储单位的文件;我们平常开发的java代码,其存储文件...

  • 2020-12-19 JVM-编译和类加载机制

    引言:今天谈谈源码文件如何编译Class字节码文件以及字节码文件如何加载到JVM中。 源码转换为字节码文件 1.源...

  • FileReader 和 FileInputStream-02-

    FileReader 读取文件字符 FileInputStream读取文件字节 字符和字节的区别

  • Java传递音频给PC端C#程序(2)

    采用报头形式发送文件,发送的整块字节由4部分组成。 文件的名称转成字节后,计算该字节长度; 文件名转成的字节 ; ...

网友评论

      本文标题:前端字节流下载文件

      本文链接:https://www.haomeiwen.com/subject/iaughktx.html