博客
关于我
vue使用axios接收后台返回的文件流下载文件
阅读量:509 次
发布时间:2019-03-07

本文共 1183 字,大约阅读时间需要 3 分钟。

后台接口返回数据处理

在实际项目中,我们经常需要通过后台接口获取数据并进行处理。以下是一种常见的技术实现方案,重点介绍了文件下载功能的实现方式。

axios fetch 实现

我们可以使用 axios 进行异步请求,以下是代码示例:

this.axios({    method: "get",    headers: {        "content-type": "application/json",        Authorization: "Bearer " + sessionStorage.getItem("access_token")    },    url: 'your_URL',    params: {'name':'Jack'},    responseType: "blob"}).then(function (res) {    // 处理 blob 数据    let blob = new Blob([res.data]);    let url = window.URL.createObjectURL(blob);        // 创建下载链接    let a = document.createElement("a");    a.href = url;    a.download = "表格.xlsx";    a.click();        // 释放 url    window.URL.revokeObjectURL(url);}).catch(function (res) {    console.log("error", res);});

注意事项

  • responseType 必须设置为 "blob":这一步非常关键。如果忘记设置 responseType 为 "blob",下载的文件可能会损坏,导致无法正常打开。

  • 文件处理流程:从接口返回的 blob 数据开始,创建 Blob 对象后,可以通过 window.URL.createObjectURL() 创建临时 url,用于操作文件。

  • 文件下载实现:通过创建一个 anchor 元素(<a>),设置其 href 为临时 url,并指定 download属性,用户点击后即可下载文件。

  • 实现效果

    通过上述方法,用户可以在浏览器中直接下载所需的文件,操作流程简洁易懂。该方法适用于需要将后台接口返回的二维数据(如 Excel 文件)直接展示给用户的场景。

    可扩展性

    该方案基于现代浏览器的 Blob API 实现,兼容性较高。需要注意的是,某些老旧浏览器可能不支持此方法,具体可根据项目需求进行适配。

    总结

    通过上述方法,我们可以轻松实现后台接口返回数据的文件下载功能。关键在于正确设置 responseType 和正确处理 blob 数据。

    转载地址:http://nuwnz.baihongyu.com/

    你可能感兴趣的文章
    Node-RED中配置周期性执行、指定时间阶段执行、指定时间执行事件
    查看>>
    Node-RED安装图形化节点dashboard实现订阅mqtt主题并在仪表盘中显示温度
    查看>>
    Node-RED怎样导出导入流程为json文件
    查看>>
    Node-RED订阅MQTT主题并调试数据
    查看>>
    Node-RED通过npm安装的方式对应卸载
    查看>>
    node-request模块
    查看>>
    node-static 任意文件读取漏洞复现(CVE-2023-26111)
    查看>>
    Node.js 8 中的 util.promisify的详解
    查看>>
    node.js debug在webstrom工具
    查看>>
    Node.js RESTful API如何使用?
    查看>>
    node.js url模块
    查看>>
    Node.js Web 模块的各种用法和常见场景
    查看>>
    Node.js 之 log4js 完全讲解
    查看>>
    Node.js 函数是什么样的?
    查看>>
    Node.js 函数计算如何突破启动瓶颈,优化启动速度
    查看>>
    Node.js 切近实战(七) 之Excel在线(文件&文件组)
    查看>>
    node.js 初体验
    查看>>
    Node.js 历史
    查看>>
    Node.js 在个推的微服务实践:基于容器的一站式命令行工具链
    查看>>
    Node.js 实现类似于.php,.jsp的服务器页面技术,自动路由
    查看>>