vue文件流下载实例
场景描述:
前端请求接口,接口的response返回为文件流,前端进行下载
1、定义触发按钮
1 | <el-button type= "success" @click= "export()" >导 出</el-button> |
1 | import { export } from '@/views/request.js' ; |
2、定义接口请求:请求时需要加入responseType 为blob,对文件流 进行转换
1 2 3 4 5 6 7 8 9 10 | // 导出下载 export function export (data) { return request({ url: "/export" , method: "post" , data, responseType: 'blob' , //将文件流转成blob对象 noErrorMsg: true }); } |
3、vue页面定义渲染文件流方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // 导出 export (type) { let req = { ... this .queryData, }; export (req) .then((res) => { // res就是接口返回的文件流了; 定义请求的接口时需标明responseType: 'blob',//将文件流转成blob对象 let objectUrl = window.URL.createObjectURL( new Blob([res])); const elink = document.createElement( 'a' ); elink.download = `${ this .tableTitle}.xlsx`; //下载文件名称, elink.style.display = 'none' ; elink.href = objectUrl; document.body.appendChild(elink); elink.click(); document.body.removeChild(elink); window.URL.revokeObjectURL(elink.href); // 释放URL 对象 }) . catch ((error) => { console.log(error); }); }, |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?