美文网首页
axios post 请求下载 excel 文件

axios post 请求下载 excel 文件

作者: 闲睡猫 | 来源:发表于2020-04-29 22:02 被阅读0次

    需求

    技术栈如下

    • 前端 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");
    }
    

    相关文章

      网友评论

          本文标题:axios post 请求下载 excel 文件

          本文链接:https://www.haomeiwen.com/subject/rpeowhtx.html