vue导出文件(file-saver,vue2,vue3)

一、安装插件

npm install file-saver --save
// 如使用ts,安装file-saver的typeScript类型定义
npm install @types/file-saver --save-dev

二、导出的格式类型参考

文件后缀Type
.pdf  application/pdf
.doc application/msword
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.xlsapplication/vnd.ms-excel
.xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.ppt application/vnd.ms-powerpoint
.pptxapplication/vnd.openxmlformats-officedocument.presentationml.presentation
.pdfapplication/pdf
. pngapplication/png
.jpgapplication/jpg
.gifapplication/gif
 .zipapplication/zip

三.基本使用

代码如下:

import { saveAs } from 'file-saver'

导出(下载文件):

//⚠️注意:需要配置你需要导出的文件类型
const blob = new Blob(['文件内容'], 
{ type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'})

saveAs(blob,'导出的文件名字')


四、案例

import axios from 'axios'
import { saveAs } from 'file-saver'
 axios({
      method: 'get',
      url: url,
      responseType: 'blob',
      //注入token流,需要添加不需要则无需添加。
      headers: { 'Authorization': 'Bearer ' + getToken() }
    }).then(async (res) => {
        const blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-            
        officedocument.wordprocessingml.document' })
        saveAs(blob, name)
      } else {
        console.log('接口报错')
      }
    })

### 如何在 Vue 3.0 中使用 File-Saver 库 要在 Vue 3.0 项目中集成并使用 File-Saver 实现文件保存功能,可以按照以下方法操作: #### 安装依赖 首先需要安装 `file-saver` 和其他可能需要用到的相关库。可以通过 npm 或 yarn 来完成安装。 ```bash npm install file-saver --save ``` 或者 ```bash yarn add file-saver ``` #### 导入和初始化 在组件或工具函数中导入 `file-saver` 并设置其基本用法。以下是具体的代码示例: ```javascript import { saveAs } from 'file-saver'; export default { name: "FileSaverExample", methods: { async downloadFile() { try { const response = await this.fetchBlobData(); // 假设这是获取 Blob 数据的方法 if (response && typeof response === 'object') { const blob = new Blob([response], { type: 'application/zip' }); saveAs(blob, 'example.zip'); // 使用 file-saver 下载文件 } } catch (error) { console.error('Error downloading the file:', error); } }, fetchBlobData() { return axios({ url: '/api/download', // 替换为实际接口地址 method: 'GET', responseType: 'blob' }).then(response => response.data); // 返回 Blob 数据 } } }; ``` 此代码片段展示了如何通过 Axios 获取服务器上的二进制数据(如 ZIP 文件),并将这些数据作为文件提供给用户下载[^1]。 #### 配置 Webpack 外部化模块(如果遇到错误) 当使用某些特定库时可能会碰到类似 `Can't resolve './cptable'` 的问题。这通常是因为 Webpack 默认无法解析一些 Node.js 环境下的模块。可以在项目的 `vue.config.js` 文件中添加如下配置来解决问题[^2][^3]: ```javascript module.exports = { configureWebpack: { externals: { './cptable': 'var cptable' } } }; ``` 这样做的目的是告诉 Webpack 不要尝试打包 `cptable` 模块,而是将其视为全局变量处理。 --- ### 注意事项 - **兼容性测试**:确保目标浏览器支持 `Blob` 对象以及 `file-saver` 提供的功能。 - **安全性考虑**:对于生产环境的应用程序来说,应验证来自后端的数据是否安全可靠,防止恶意脚本注入等问题发生。 - 如果计划扩展到 Excel 文件导出等功能,则可进一步引入像 XLSX 这样的第三方库配合使用[^2]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猛男敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值