【前端文件下载】vue实现文件流动态下载(案例详解)

简介: 案例分享vue文件流动态下载!
【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿大家奔赴在各自的热爱里…

一、业务场景

场景一:如果你的文件是静态的存储在自己的服务器上;

使用window.location.href可以实现下载功能

   //获取或者赋值一个下载路径
   let downUrl;
   //采用如下的方式可以直接下载文件
   window.location.href = downUrl;

如上的路径对应服务器上文件存储的路径即可,在一定的场景下是不需要后台的

当然在开发过程遇到过问题也做过总结可参考:JavaScript前端判断文件是否存在


场景二:如果你的文件需要动态的生成,返回给你文件流,动态的生成excel文件等

比如你有一个人员管理系统,系统本身可以对人员信息进行修改,当然可以导出excel表格,此时这个文件就是一个动态的文件,要通过数据库的读取插入到当前的Excel文件中,返回值是一个文件流,返回给前端
在这里插入图片描述
困难-解决-反思-分享


二、代码分享

应用场景:后台是post请求,且返回的是文件流

当时查阅了很多资料,如下的代码亲测实现了访问后台下载文件

download() {
    let url = downURL; //后端接口对应的访问地址
    window.app.axios
        .get(url, {
            headers: {
                'Content-Type': "application/x-download'",
                token: sessionStorage.getItem('token') 
            },
            responseType: 'blob'
        })
        .then(function(response) {
            let blob = new Blob([response.data], {
                type: 'application/vnd.ms-excel'
            });
            let filename = 'Testfile.xls';
            if (window.navigator.msSaveOrOpenBlob) {
                // 兼容IE10
                window.navigator.msSaveBlob(blob, filename);
            } else {
                //  兼容chrome/firefox
                let aTag = document.createElement('a');
                aTag.download = 'Testfile.xls';
                aTag.href = window.URL.createObjectURL(blob);
                aTag.click();
                URL.revokeObjectURL(aTag.href);
            }
        })
        .catch(function() {
            //如果不能正常下载给出对应提示
            this.$message({
                type: 'error',
                message: '文件下载失败'
            });
        });
}

后台的接口可以先使用postman测试

//downURL此出的url具体根据后端的地址拼接,此处只是给一个案例
window.location.protocol + '//' + window.location.hostname + 
(window.location.port ? ':' + window.location.port : '') + '/' + 'file/download'

此处headers为权限验证的token,如果没有可以不传

 token: sessionStorage.getItem('token') 

blob:response 是一个包含二进制数据的 Blob 对象 。

 responseType: 'blob' // 表明返回服务器返回的数据类型

补充知识

 //http://localhost:8888/#/
 window.location.protocol
 //"http:"
 window.location.host
 //"localhost:8888"
 window.location.hostname
 //"localhost"``

三、拓展补充

开发过程也遇到了很多问题,相关问题总结请参考

缓存问题解决:Java代码读取文件缓存问题解决(案例详解)

File类参考:深入学习Java文件类File类(Demo详解)

上传组件基础学习可参考:Element-UI中el-upload上传组件(demo详解)

MultipartFile类参考:MultipartFile工具类(方法详解)

el-upload上传组件:accept属性限制文件类型

Springboot项目-案例详解:Java代码实现读取resource文件
在这里插入图片描述
文件上传下载等相关知识,还有很多值得学习和研究的地方,期待不断努力遇见一个更好的自己

---

非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

愿你们奔赴在自己的热爱里!

目录
相关文章
|
8月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
752 1
|
9月前
|
移动开发 前端开发 JavaScript
Vue与React两大前端框架的主要差异点
以上就是Vue和React的主要差异点,希望对你有所帮助。在选择使用哪一个框架时,需要根据项目的具体需求和团队的技术栈来决定。
513 83
|
8月前
|
JavaScript 前端开发 编译器
Vue与TypeScript:如何实现更强大的前端开发
Vue.js 以其简洁的语法和灵活的架构在前端开发中广受欢迎,而 TypeScript 作为一种静态类型语言,为 JavaScript 提供了强大的类型系统和编译时检查。将 Vue.js 与 TypeScript 结合使用,不仅可以提升代码的可维护性和可扩展性,还能减少运行时错误,提高开发效率。本文将介绍如何在 Vue.js 项目中使用 TypeScript,并通过一些代码示例展示其强大功能。
352 22
|
11月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
318 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
10月前
|
人工智能 JavaScript 前端开发
Vue 性能革命:揭秘前端优化的终极技巧;Vue优化技巧,解决Vue项目卡顿问题
Vue在处理少量数据和有限dom的情况下技术已经非常成熟了,但现在随着AI时代的到来,海量数据场景会越来越多,Vue优化技巧也是必备技能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 前端开发 搜索推荐
Vue的数据驱动视图与其他前端框架的数据驱动方式有何不同?
总的来说,Vue 的数据驱动视图在诸多方面展现出独特的优势,其与其他前端框架的数据驱动方式的不同之处主要体现在绑定方式、性能表现、触发机制、组件化结合、灵活性、语法表达以及与后端数据交互等方面。这些差异使得 Vue 在前端开发领域具有独特的地位和价值。
275 58
|
12月前
|
JavaScript 前端开发 jenkins
抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
本文探讨了在不依赖Node和VSCode的情况下,仅使用记事本和浏览器开发一个完整的Vue3前端项目的方法。通过CDN引入Vue、Vue Router、Element-UI等库,直接编写HTML文件实现页面功能,展示了前端开发的本质是生成HTML。虽然日常开发离不开现代工具,但掌握这种基础方法有助于快速实现想法或应对特殊环境限制。文章还介绍了如何用Node简单部署HTML文件到服务器,提供了一种高效、轻量的开发思路。
296 10
|
前端开发 JavaScript 开发者
React与Vue:前端框架的巅峰对决与选择策略
【10月更文挑战第23天】React与Vue:前端框架的巅峰对决与选择策略
|
前端开发 JavaScript 数据管理
React与Vue:两大前端框架的较量与选择策略
【10月更文挑战第23天】React与Vue:两大前端框架的较量与选择策略
|
前端开发 JavaScript 开发者
React与Vue:前端框架的巅峰对决与选择策略
【10月更文挑战第23天】 React与Vue:前端框架的巅峰对决与选择策略

热门文章

最新文章