Vue实战【后端返回文件流时,前端如何处理并成功下载流文件】

简介: Vue实战【后端返回文件流时,前端如何处理并成功下载流文件】

🌟前言

哈喽小伙伴们,在我们日常工作当中,大家一定会遇到 文件导出 这样的功能需求点;导出功能前端后端都可以实现,通常情况下呢是由我们后端同事去处理的,那么当我们后端同事给你返回文件流的时候,前端要怎么处理并且完成下载呢?今天就给大家说个简单的方法,我们一起来看下吧🤘

🌟文件和流的关系


文件(File)和流(Stream)是既有区别又有联系的两个概念。


文件 是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。

  • 存储介质:文件是指在各种存储介质上(如硬盘、可移动磁盘、CD等)永久存储的数据的有序集合,它是进行数据读写操作的基本对象。
  • 特性:每个文件都有文件名、文件所在路径、创建时间及访问仅限等属性。
  • 是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道等。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。
  • 存储介质:除了和磁盘文件直接相关的文件流以外,流还有多种类型。流可以分布在网络中、内存中或者是磁带中。

🌟后端返回来的流是什么样子的

这里用一张图片来说明一下


cf8ffb1796064b7291dbc44e5fcc9208.png


如上图,红色框内,类似于乱码的,就是文件流在浏览器中的表现方式

🌟前端处理文件流并且成功下载

这里以Vue为主实现

在导出接口文件里写入:

import request from '@/utils/request';
// 车辆运行分析导出
export function exportCarRunAnalyse(data) {
    return request({
        responseType: 'blob', // 重点,responseType设置为 blob
        url: '/statistics/exportCarRunAnalyse',
        method: 'post',
        data
    });
}

调取该接口的页面里写入:

// data 为 向后台传递的参数,大家自行定义
            exportCarRunAnalyse(data).then(res => {
                console.log(res); // 控制台输出:Blob {size: 30208, type: 'application/x-msdownload'}
                var debug = res;
                if (debug) {
                    var elink = document.createElement('a');
                    elink.download = '导出表格.xls';
                    elink.style.display = 'none';
                    var blob = new Blob([debug], { type: 'application/x-msdownload' });
                    elink.href = URL.createObjectURL(blob);
                    document.body.appendChild(elink);
                    elink.click();
                    document.body.removeChild(elink);
                } else {
                    this.$message.error('导出异常请联系管理员');
                }
            }).catch(err => {
                console.log(err);
            });

这时再去点击导出,即可将 文件流 下载为文件




4bddc2ad0d404709bd25bfba422c4831.jpg



🌟结语

方法有好多,这只是其中的一种,也欢迎大家补存,共同学习。各位小伙伴让我们 let’s be prepared at all times!





目录
相关文章
|
3月前
|
存储 JavaScript 前端开发
前端技术分享:使用Vue.js与Vuex管理状态
【10月更文挑战第1天】前端技术分享:使用Vue.js与Vuex管理状态
54 6
|
3月前
|
JavaScript 前端开发 API
Vue.js:现代前端开发的强大框架
【10月更文挑战第11天】Vue.js:现代前端开发的强大框架
91 41
|
4月前
|
JavaScript 前端开发 小程序
一小时入门Vue.js前端开发
本文是作者关于Vue.js前端开发的快速入门教程,包括结果展示、参考链接、注意事项以及常见问题的解决方法。文章提供了Vue.js的基础使用介绍,如何安装和使用cnpm,以及如何解决命令行中遇到的一些常见问题。
104 5
一小时入门Vue.js前端开发
|
3月前
|
JavaScript 前端开发 API
Vue.js:打造高效前端应用的最佳选择
【10月更文挑战第9天】Vue.js:打造高效前端应用的最佳选择
26 2
|
3月前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
3月前
|
JavaScript 前端开发
Vue开发必备:$nextTick方法的理解与实战场景
Vue开发必备:$nextTick方法的理解与实战场景
230 1
|
3月前
|
JavaScript 前端开发 API
前端技术分享:Vue.js 动态路由与守卫
【10月更文挑战第1天】前端技术分享:Vue.js 动态路由与守卫
|
3月前
|
开发框架 前端开发 JavaScript
React、Vue.js 和 Angular主流前端框架和选择指南
在当今的前端开发领域,选择合适的框架对于项目的成功至关重要。本文将介绍几个主流的前端框架——React、Vue.js 和 Angular,探讨它们各自的特点、开发场景、优缺点,并提供选择框架的建议。
73 6
|
2月前
|
JavaScript UED
"Vue实战技巧大揭秘:一招解决路由跳转页面不回顶部难题,让你的单页面应用用户体验飙升!"
【10月更文挑战第23天】在Vue单页面应用中,点击路由跳转时,默认情况下页面不会自动滚动到顶部,这可能影响用户体验。本文通过一个新闻网站的案例,介绍了如何使用Vue-router的全局前置守卫和`scrollBehavior`方法,实现路由跳转时页面自动滚动到顶部的功能,提升用户浏览体验。
111 0
|
4月前
|
前端开发 JavaScript API
React、Vue.js 和 Angular前端三大框架对比与选择
前端框架是用于构建用户界面的工具和库,它提供组件化结构、数据绑定、路由管理和状态管理等功能,帮助开发者高效地创建和维护 web 应用的前端部分。常见的前端框架如 React、Vue.js 和 Angular,能够提高开发效率并促进团队协作。
184 4