vue中使用file-saver导出文件

这篇博客介绍了如何使用File-Saver库在JavaScript中实现文件的下载,包括文字、URL、图片和不同格式的数据导出。通过示例代码展示了如何处理文件流并封装成适用于Excel、CSV和图片的导出方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装
npm install file-saver --save
二 使用

import { saveAs } from 'file-saver';

使用保存文字 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, '近年走势')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值