vue实现文件流文件导出

vue实现文件流文件导出


场景:实现execl文件导出

前端工作:根据后台返回的文件流,导出execl文件

遇到的主要问题:1.出现跨域(注:这里后台其实已经实现所有接口可跨域,但是不知道为啥还是出现了跨域)2.生成的href地址未赋值到a标签上

整体解决思路:
    a标签加href地址具备下载共功能。
    所以这里出现第一个目标:根据文件流在本地实现下载地址。
    主要用到了俩个知识点:

  1. new Blob(), 利用Blob构造函数,把返回的文件流转为blob对象
  2. 利用URL.createObjectURL(第一点生成的blob对象),生成本地url

具体代码

const blob = new Blob([res]); //res为后台返回的文件流,注意参数是以数组的形式上传
const href = URL.createObjectURL(blob); //URL都要大写,这点也要注意
const link = document.createElement("a") //生成a标签用于模拟下载
link.download = "test.xlsx"; //自定义下载文件名称
link.href = href //把生成的href赋值到a标签上,在这里我遇到一个问题,
//直接赋值无法把href赋值到a标签的href上(不知道是不是因为封装框架的问题)
//我采用了原生的方法
//link.setAttribute("href", href);
document.body.appendChild(link);
link.click();
//释放空间
document.body.removeChild("link");
URL.removeObjectURL(href);

注: 在请求后台接口时,在请求的接口中加入responseType: blob. 具体用法,responseType和headers同级。我这里还未弄清楚它的作用,希望万能的网友帮忙解释一下。

跨域问题最终通过vue代理进行解决,这里不再具体赘述。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue导出文件Excel,你可以使用以下步骤: 1. 首先,你需要安装并引入 `xlsx` 库。你可以使用 `npm` 或 `yarn` 安装该库: ```bash npm install xlsx ``` 2. 在需要导出Excel的组件中,引入 `xlsx` 库: ```javascript import XLSX from 'xlsx'; ``` 3. 创建一个导出Excel的方法,可以是按钮点击事件或其他触发导出的方式。在该方法中,你需要准备要导出的数据,并将其转换为一个 `xlsx` 对象: ```javascript exportExcel() { // 准备要导出的数据 const data = [ ['姓名', '年龄'], ['张三', 25], ['李四', 30], ['王五', 28] ]; // 创建一个工作簿 const workbook = XLSX.utils.book_new(); // 创建一个工作表 const worksheet = XLSX.utils.aoa_to_sheet(data); // 将工作表添加到工作簿中 XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); // 将工作簿转换为文件 const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); // 创建一个Blob对象 const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); // 创建一个下载链接 const url = URL.createObjectURL(blob); // 创建一个隐藏的<a>标签,并设置其属性 const link = document.createElement('a'); link.href = url; link.download = 'data.xlsx'; // 模拟点击下载链接 link.click(); // 释放URL对象 URL.revokeObjectURL(url); } ``` 4. 在模板中添加一个按钮或其他触发导出的元素,并绑定导出Excel的方法: ```html <button @click="exportExcel">导出Excel</button> ``` 这样,当点击导出Excel按钮时,会生成一个Excel文件并自动下载到用户的设备中。请注意,以上代码是一个简单的示例,你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值