问题描述

平常我们在项目中需要做下载文件的功能,比如下载excel表格、比如下载pdf文件、比如下载word文档,这样的功能,一般是后端做,即:后端返回一个流文件、或者返回一个url地址…

但是,实际上,前端也是可以做的。很简单,使用a标签的下载功能即可。不过要注意静态文件存放的位置。

注意,前端做静态资源的下载适合固定的数据,不和数据库交互的数据,比如excel模板、比如注意事项.docx文档什么的。反之,后端做会更加合适。

步骤

第一步,public文件夹下新建static文件夹存放静态资源

在我们做vue项目的public文件夹下新建static文件夹,这个文件夹存放的我们需要下载的静态资源文件,如下图,这里我存放了一个 模板.xlsx文件,待会需要下载这个文件。当然static文件夹存放pdf文件、word文件什么的都可以的。static文件夹下也可以再建文件夹精细化存放,只要a标签下载的时候路径对得上即可,这里不赘述。

注意,这里要在public文件夹中新建文件夹存放静态资源,不能在src文件夹中新建文件夹存放静态资源,因为public文件夹中的文件资源不会被npm run build打包编译。大家打包一下,就会发现 模板.xlsx文件 是存放在dist/static文件夹中
第二步,模拟a标签下载文件即可

假设我们是点击按钮下载静态资源,代码如下:

// html
<el-button type="primary" plain @click="frontDownload">本地下载</el-button>
//js
frontDownload() {var a = document.createElement("a"); //创建一个<a></a>标签a.href = "/static/模板.xlsx"; // 给a标签的href属性值加上地址,注意,这里是绝对路径,不用加 点.a.download = "下载啦.xlsx"; //设置下载文件文件名,这里加上.xlsx指定文件类型,pdf文件就指定.fpd即可a.style.display = "none"; // 障眼法藏起来a标签document.body.appendChild(a); // 将a标签追加到文档对象中a.click(); // 模拟点击了a标签,会触发a标签的href的读取,浏览器就会自动下载了a.remove(); // 一次性的,用完就删除a标签
}

如果是后端返回文件地址的那种形式,a.href的值就是后端返回的地址。

总结

上述代码便可以实现a标签访问前端静态资源,并下载的功能。好记性不如烂笔头,记录一下吧

vue中使用a标签下载静态资源文件(比如excel、pdf等)后端不参与相关推荐

  1. vue项目中使用a标签下载视频文件

    vue项目中使用a标签下载视频文件 前提条件: 1.地址为http 2.文件格式为MP4(仅代表这次项目中使用的情况) 示例代码: <el-button size="mini" ...

  2. 013_下载静态资源

    一. 使用Tomcat默认的servlet去下载静态资源  1. 直接以超链接的方式下载, 不写任何代码, 就能够下载东西下来. <a href="Download/shake.wav ...

  3. springboot中添加静态资源的方式,默认的静态资源文件夹有哪些

    通过webjar的方式引入静态资源 访问popular webjar网站,里面有大量的最常用的静态资源webjar,以jar包的形式导入静态资源.类如jquery.vue.bootstrap等,都可以 ...

  4. vue中svg转png下载

    vue中svg转png下载 <template><div><button @click="downloadPng">change</but ...

  5. SpringBoot 读取项目中静态资源文件

    目录 一. ClassPathResource 二. DefaultResourceLoader 三. PathMatchingResourcePatternResolver 四. ResourceU ...

  6. 如何在React Native中构建项目并管理静态资源

    by Khoa Pham 通过Khoa Pham 如何在React Native中构建项目并管理静态资源 (How to structure your project and manage stati ...

  7. 在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案

    在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案 参考文章: (1)在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案 (2)https: ...

  8. React中Fragment标签和空标签的使用(vue中的template标签类似)

    Fragment作用: 类似于vue中的template标签,将当前dom不渲染后页面.在多层循环中可以添加key属性,其他属性不可以添加.不然会警告,提示只能有key属性和children vdom ...

  9. SpringBoot中的yaml语法及静态资源访问问题

    配置文件-yaml 在spring Boot开发中推荐使用yaml来作为配置文件. 基本语法: key: value:kv之间有空格 大小写敏感 使用缩进表示层级关系 缩进不允许使用tab,只允许空格 ...

最新文章

  1. android检测蓝牙设备连接不上,Android检查设备连接状态
  2. 为什么多线程可以利用到多核?
  3. SQL语句求解同一人物不同日期,某一属性的差值
  4. 使用Xshell链接阿里的Linux服务器
  5. 理论+实验·MHA高可用配置及故障切换
  6. SAP Cloud for Customer Individual Customer的UI建模
  7. c语言不能在函数中求数组大小,C语言中数组长度不能用变量定义吗?
  8. 你在支付宝上搞钱,“90后”却在相亲
  9. CMS 系统之 iframe 结构
  10. Java学习之路 之 类篇
  11. 解决wordpress用户注册时,点击邮件中的重置密码链接提示“您的密码重设链接无效”
  12. 几款Web服务器性能压力测试工具
  13. 【数据产品案例】阿里生意参谋-用户分析
  14. 如何用CMD查看电脑详细配置
  15. Jenkins 插件中心国内镜像源发布
  16. 课程设计---族谱管理系统(c++)
  17. Python计算经济距离权重矩阵
  18. mysql索引优化分析_MySQL索引优化与分析(重要)
  19. 美团面试——餐饮系统开发
  20. @Inherited 的作用

热门文章

  1. unix是计算机的操作系统,Unix属于计算机的哪种操作系统?
  2. 用postman导出excel文件
  3. 如何在CentOS7上编译WELD
  4. 配置环境变量区分开发环境和生产环境
  5. 腾讯云账号怎么看服务器密码是什么格式,腾讯云服务器怎么查看FTP账号密码?...
  6. 好佳居窗帘十大品牌-如何选择办公室窗帘的颜色
  7. SAE下安装wordpress
  8. 读书杂谈-《架构探险:从零开始写Java Web框架》
  9. 计算机机房地砖铺设施工工艺,地砖铺设的方法及铺设施工流程
  10. C++中assert函数的用法介绍