前端导出文件,后端返回文件流过大直接干崩溃(1)

a.download = ${name}.zip

a.href = e.target.result

// 兼容触发click

const evt = document.createEvent(‘MouseEvents’)

evt.initEvent(‘click’, true, true)

a.dispatchEvent(evt)

}

}

然后就出现上面的崩溃,分析后是因为文件流太大导致的,解决办法如下:

  1. 直接让后端同学将zip准备好,调用接口返回的是一个地址 我们通过访问地址来下载zip

<a @click=“downFile()”>{{文件名称}}

//下载方法

downZip () {

let a = document.createElement(‘a’)

a.href = ‘这里是后端同学返回的地址’

a.click()

}

  1. 我们可以接收较大的文档流—在 github 上面找到了大神写的一个库
  • 首先安装(基于Vue,也可以去访问gitHub上下载:https://github.com/eligrey/FileSaver.js)

npm install file-saver --save

  • 引入方法

import { saveAs } from ‘file-saver’;

  • 通过调用上面引入的方法来接收很大的文件流 (修改我们上面的exportZip方法如下)

export function exportZip(res, name) {

const blob = new Blob([res.data], {

type: ‘application/zip’

})

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
ps://bbs.csdn.net/topics/618191877)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于后端返回文件流并由前端导出的需求,您可以按照以下步骤进行操作: 1. 后端传输文件流:在后端,您可以使用合适的编程语言和框架,将文件以流的形式返回前端。根据您使用的具体技术栈,可能会有不同的方法来实现这一点。 2. 前端接收文件流:前端需要通过合适的方式接收后端返回文件流。通常情况下,可以使用浏览器的内置 API(如 Fetch API 或 XMLHttpRequest)来发起请求并接收文件流。 3. 将文件导出:一旦前端成功接收到文件流,您可以使用合适的 JavaScript 库或框架来处理并导出文件。常见的方法是创建一个 `<a>` 标签,并为其设置 `href` 属性为文件流的 URL,再调用 `click()` 方法以触发下载。 以下是一个简单的示例,演示了如何在前端导出后端返回文件流(以 CSV 文件为例): ```javascript // 后端返回文件流 fetch('/api/getFile', { method: 'GET', }) .then(response => response.blob()) // 将响应转换为 Blob 对象 .then(blob => { // 创建下载链接 const downloadLink = document.createElement('a'); downloadLink.href = window.URL.createObjectURL(blob); downloadLink.download = 'file.csv'; // 设置下载文件的名称 // 触发下载 downloadLink.click(); }) .catch(error => { console.error('导出文件失败:', error); }); ``` 请注意,这只是一个示例,并不能适用于所有情况。根据您的实际需求和技术栈,可能需要进行适当的调整和修改。希望对您有所帮助!如果您有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值