前端下载文件的几种方式

摘要:
流文件是没有结构的文件。Blob对象表示一个不可变的原始数据类文件对象。Blob不一定以JavaScript原生格式表示数据。

1.请求获取后端生成的文件url地址

    downloadFile(url) {
      //下载文件
      var a = document.createElement("a");
      a.setAttribute("href", url);
      a.setAttribute("target", "_blank");
      let clickEvent = document.createEvent("MouseEvents");
      clickEvent.initEvent("click", true, true);
      a.dispatchEvent(clickEvent);
    },

2.请求后端返回数据本身的流文件

(1) 呈现在用户面前的文件结构叫做文件的逻辑结构,逻辑结构分为两种:一种是记录式文件,另一种为流式文件。流文件 就是没有结构的文件。

(2) Blob 对象表示一个不可变、原始数据的类文件对象。Blob 表示的不一定是JavaScript原生格式的数据。

      // 使用Blob
      let blob = new Blob([res.data], { type: `text/plain;charset=utf-8` });
      // 获取heads中的filename文件名
      let downloadElement = document.createElement("a");
      // 创建下载的链接
      let href = window.URL.createObjectURL(blob);
      downloadElement.href = href;
      // 下载后文件名
      downloadElement.download = "文件名";
      document.body.appendChild(downloadElement);
      // 点击下载
      downloadElement.click();
      // 下载完成移除元素
      document.body.removeChild(downloadElement);
      // 释放掉blob对象

3.后端直接返回某种格式的数据本身

    download(filename, text) {
      var pom = document.createElement("a");
      pom.setAttribute(
        "href",
        "data:text/plain;charset=utf-8," + encodeURIComponent(text)
      );
      pom.setAttribute("download", filename);
      if (document.createEvent) {
        var event = document.createEvent("MouseEvents");
        event.initEvent("click", true, true);
        pom.dispatchEvent(event);
      } else {
        pom.click();
      }
    },

参考文档:

https://www.cnblogs.com/woai3c/p/11262491.html

https://www.cnblogs.com/xiaohi/p/6550133.html

https://blog.csdn.net/qq_33592641/article/details/104991704

免责声明:文章转载自《前端下载文件的几种方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【ITOO 1】将List数据导出Excel表使用fetch进行数据请求时报json错误下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JAVA 实现CLOB转String

CLOB 定义   数据库中的一种保存文件所使用的类型。   Character Large Object   SQL 类型 CLOB 在 JavaTM 编程语言中的映射关系。SQL CLOB 是内置类型,它将字符大对象 (Character Large Object) 存储为数据库表某一行中的一个列值。默认情况下,驱动程序使用 SQL locator(C...

Oracle中Varchar2/Blob/Clob用法详解

数据库中提供了三种字段类型Varchar2、Blob和Clob用于存储字符串或二进制数据,其中Varchar2、Clob用于存储字符串数据,而Blob用于存储二进制数据。                Varchar2采用单字节存储,有两个最大长度:一个是在字段类型4000;一个是在PL/SQL中变量类型32767。 今天犯了一个小错误,就是函数的var...

web worker在react项目中的使用

新建一个worker.js文件,编写worker子线程脚本,代码如下: const workercode = () => { self.onmessage = function(e) { console.log('Message received from main script'); var workerResult = 'R...

5-URL.createObjectURL()的使用方法

官方说明问文档 URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象。 URL.createObjectURL(blob)和FileReader.rea...

FormData、Blob、File、ArrayBuffer数据类型

XMLHttpRequest 1.0 1.0 中xmlhttpRequest有2个重要的返回属性,reposeText,reposeXml。下面的数据类型都是2.0新增的 FormData对象 我们应该都用过jQuery,其中有个方法叫做serialize(), 作用就是表单序列化,也就是以查询字符串形式获得类表单post/get的数据给Ajax请求,例如...

wangEditor粘贴word图片且图片文件自动上传功能

图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。加入下面的代码: //判断剪贴板的内容是否包含...