专栏首页codingaxios post 请求下载 excel 文件

axios post 请求下载 excel 文件

需求

技术栈如下

  • 前端 vue+element
  • 后端 php 框架 laravel

需要通过 axios 发送 post 请求下载 excel 文件

服务器的 excel 文件生成工具用的是 laravel 扩展包 Laravel Excel

默认情况下,axios 是不会自动下载服务端返回的 excel 文件的,有些同学直接绕过 axios,用 a 链接请求文件,虽然能下载,但这样有安全隐患。谁都可以下载文件,在权限认证方面会有些麻烦,即使能实现权限控制,也是蹩脚的实现方式

解决

万能的 stackoverflow 给出了标准答案

代码如下:

前端:

this.$http.post('/export-excel', {}, { responseType: 'blob' }).then(function (response) {
    const url = window.URL.createObjectURL(new Blob([response.data]))
    const link = document.createElement('a')
    link.href = url
    link.setAttribute('download', '导出报表.xlsx')
    document.body.appendChild(link)
    link.click()
})

后端:

public function exportExcel()
{
    // 具体用法请参考 laravel-excel 文档
    return Excel::download(new ExcelExport(), "导出报表.xlsx");
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • node.js入坑记

    坊间关于"Facebook只招全栈工程师"的传言使得全栈工程师火了一阵子。尤其是那些刚入行的年轻人,单是看着"全栈"这个称谓,就已经感到热血沸腾,有种刀锋在鞘里...

    章鱼喵
  • laravel使用队列监控 Horizon

    Horizon 是 Laravel 生态圈里的一员,为 Laravel Redis 队列提供了一个漂亮的仪表板,允许我们很方便地查看和管理 Redis 队列任务...

    章鱼喵
  • 2018年swoole实战3-异步毫秒定时器服务端客户端启动服务

    项目中需要使用定时器时,crontab是常用的选择,不过crontab的粒度太大,最小时间单位是分钟级别,如果我们要设置秒级,甚至毫秒级的定时器,crontab...

    章鱼喵
  • 纯CSS绘制三角形、梯形及border属性的延伸

    利用CSS实现三角形效果,比较常用的思路是使用 border 边框来实现,border 边框是由四个三角形组成的,通过调整四个边来实现不同形状的三角形。

    德顺
  • Let’s Encrypt 泛域名证书免费申请

    用户1202364
  • Windows 独立启动方式安装 Archiva

    你可以将安装文件拷贝到任何你希望运行的目录中,下面的步骤中。我们没有将 Archiva 安装成服务,所以你需要通过控制台的方式来进行启动。

    HoneyMoose
  • 小白都能学会的css

    css 相当于美化工具,就是在事物原有的基础上对外表进行修饰和包装,跟ps、美图秀秀等类似,只不过,css 是美化的对象是html 文本,是一个超文本标记语言。

    佛系编程人
  • 你距离被Facebook认可的数据分析师,还差点什么?

    经常有小伙伴在各种渠道问我,数据分析师怎么入门?应该读什么书?如何能成为被大公司认可的数据分析师? Facebook 数据分析师邹昕曾分享过这样一张“数据分析核...

    CDA数据分析师
  • 干货|你距离被Facebook认可的数据分析师,还差点什么?

    想成为 Facebook 水准数据分析师,有哪些必备的核心技能?经常有小伙伴在各种渠道问我,数据分析师怎么入门?应该读什么书?如何能成为被大公司认可的数据分析师...

    灯塔大数据
  • 【ssm个人博客项目实战09】写博客与自定义监听器1、2、3、

    前面我们已经完成了博客的分页显示模糊查询删除等功能,现在我们就讲一下如何实现写博客与修改博客的功能。

    yukong

扫码关注云+社区

领取腾讯云代金券