信息发布→ 登录 注册 退出

vue中使用file-saver导出文件的全过程记录

发布时间:2026-01-11

点击量:
目录
  • 一、安装
  • 二、语法
  • 三、例子
    • 使用保存文字 require()
    • 储存文字
    • 保存网址
    • 保存画布
    • 保存文件
  • 四、具体使用
    • 总结

      一、安装

      # Basic Node.JS installation
      npm install file-saver --save
      bower install file-saver
      

      此外,可以通过以下方式安装TypeScript定义:

      # Additional typescript definitions
      npm install @types/file-saver --save-dev
      

      二、语法

      saveAs()从文件保存器导入

      import { saveAs } from 'file-saver';
      
      FileSaver saveAs(Blob/File/Url, optional DOMString filename, optional Object { autoBom })
      

      传递{ autoBom: true }如果你想FileSaver.js自动提供Unicode文本编码提示(:见字节顺序标记)。请注意,只有在您的Blob类型已charset=utf-8设置的情况下才能执行此操作。

      三、例子

      使用保存文字 require()

      var FileSaver = require('file-saver');
      var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});
      FileSaver.saveAs(blob, "hello world.txt");
      

      储存文字

      var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});
      FileSaver.saveAs(blob, "hello world.txt");
      

      保存网址

      FileSaver.saveAs("https://httpbin.org/image", "image.jpg");
      

      在相同来源内使用URL只会使用a[download]。否则,它将首先检查它是否支持带有同步头请求的cors标头。如果是这样,它将下载数据并使用Blob URL保存。如果没有,它将尝试使用下载它a[download]。

      标准的W3C File API Blob接口并非在所有浏览器中都可用。 Blob.js是Blob解决此问题的跨浏览器实现。

      保存画布

      var canvas = document.getElementById("my-canvas");
      canvas.toBlob(function(blob) {
          saveAs(blob, "pretty image.png");
      });
      

      注意:标准HTML5 canvas.toBlob()方法并非在所有浏览器中都可用。 canvas-toBlob.js是一个跨浏览器canvas.toBlob(),可以对此进行填充。

      保存文件

      您可以保存File构造函数而无需指定文件名。如果文件本身已经包含名称,则有很多方法可以获取文件实例(从存储,文件输入,新构造函数,剪贴板事件)。如果仍要更改名称,则可以在第二个参数中更改它。

      // Note: Ie and Edge don't support the new File constructor,
      // so it's better to construct blobs and use saveAs(blob, filename)
      var file = new File(["Hello, world!"], "hello world.txt", {type: "text/plain;charset=utf-8"});
      FileSaver.saveAs(file);
       
      

      四、具体使用

      下面是项目中使用file-saver封装几种常见格式的导出,这里后台主要输出文件流形式,如下:

      在文件exportFile.js中封装方法:

      import FileSaver from "file-saver";
      export default class fileSave {
          /**
           * 导出Excel文件
           * @param {*} res   文件流
           * @param {*} name  文件名
           */
          static getExcel(res, name) {
              let blob = new Blob([res], {
                  type: "application/vnd.ms-excel"
              });
              FileSaver.saveAs(blob, name + ".xlsx");
          }
       
          /**
           * 导出CSV文件
           * @param {*} res   文件流
           * @param {*} name  文件名
           */
          static getCsv(res, name) {
              let blob = new Blob([res], {
                  type: "application/vnd.ms-excel"
              });
              FileSaver.saveAs(blob, name + ".csv");
          }
       
          /**
           * 导出图片1
           * @param {*} url 图片地址
           * @param {*} name  文件名
           */
          static getImgURLs(url, name) {
              let last = url.substring(url.lastIndexOf("."), url.length);
              FileSaver.saveAs(url, `${name}${last}`);
          }
           /**
           * 导出图片2
           * @param {*} res 文件流
           * @param {*} name  文件名
           */
          static downLoadImg(res, filename) {
              let blob = new Blob([res], {
                  type: "image/jpeg"
              });
              FileSaver.saveAs(blob, `${filename}.jpg`);
          }
      }

      使用:

      1.导入

      import exportFile from '@/utils/exportFile'
      

      2.使用

      exportFile.getExcel(res.data, '近年走势')
      

      总结

      在线客服
      服务热线

      服务热线

      4008888355

      微信咨询
      二维码
      返回顶部
      ×二维码

      截屏,微信识别二维码

      打开微信

      微信号已复制,请打开微信添加咨询详情!