当前位置: 首页 > news >正文

Vue实战【后端返回ArrayBuffer时,前端如何处理并成功下载ArrayBuffer文件】

文章目录

  • 🌟前言
  • 🌟后端返回来的【ArrayBuffer】是什么样子的
  • 🌟后端为什么要返回来的【ArrayBuffer】的形式
  • 🌟前端处理文件流并且成功下载
  • 🌟结语

在这里插入图片描述

🌟前言

哈喽小伙伴们,在我们日常工作当中,大家一定会遇到 文件导出 这样的功能需求点;导出功能前端后端都可以实现,通常情况下呢是由我们后端同事去处理的,那么当我们后端同事给你返回【ArrayBuffer】的时候,前端要怎么处理并且完成下载呢?今天就给大家说个简单的方法,我们一起来看下吧🤘

🌟后端返回来的【ArrayBuffer】是什么样子的

这里用图片来说明一下
在这里插入图片描述
在这里插入图片描述

🌟后端为什么要返回来的【ArrayBuffer】的形式

  • 会更加灵活,具有扩展性;
  • 前端下载时,不确定该文件的文件名和后缀,此时需要后端来告知;
  • 文件流的形式,前端无法做出更多判断以及处理。

🌟前端处理文件流并且成功下载

这里以Vue为主实现

在导出接口文件里写入:

import request from '@/utils/request';

// 车辆运行分析导出
export function exportCarRunAnalyse(data) {
    return request({
        url: '/statistics/exportCarRunAnalyse',
        method: 'post',
        data
    });
}

调取该接口的页面里写入:

    async download(id) {
      const { data, code, msg } = await downFileById(id)
      console.log(data)
      if (code && code !== 0) {
        this.$message.error(msg)
      } else {
        let fileName = data.fileName;
        let array = data.buffer;
        // 获取到buffer内部的data
        const buffer = new ArrayBuffer(array.length);
        const view = new Uint8Array(buffer);
        for (let i = 0; i < array.length; i++) {
          view[i] = array[i];
        }
        //主要部分是上面转化数组的部分
        let blob = new Blob([buffer], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
        let elink = document.createElement('a');
        elink.href = URL.createObjectURL(blob);
        elink.download = fileName;
        document.body.appendChild(elink);
        elink.click();
        document.body.removeChild(elink);
      }
    },

这时点击导出,即可将 【ArrayBuffer】 下载为文件
在这里插入图片描述

🌟结语

方法有好多,这只是其中的一种,也欢迎大家补存,共同学习。各位小伙伴让我们 let’s be prepared at all times!

✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

相关文章:

  • Hive JOIN过滤条件位置玄学:ON vs WHERE的量子纠缠
  • c#编程:LINQ是什么?
  • 关于docker及容器的了解学习记录
  • 【 Avalonia UI 语言国际化 I18n】图文结合教学,保姆级教学,语言国际化就是这么简单(.Net C#)
  • 谷粒商城学习笔记-13-配置git-ssh-配置代码免密提交
  • 自然语言处理:第九十二章 chatBI 经验(转载)
  • ES6相关操作(2)
  • PHP集成软件用哪个比较好?
  • 41. 缺失的第一个正数(LeetCode 热题 100)
  • Linux高并发服务器开发 第十九天(线程 进程)
  • LeetCode热题100——滑动窗口/子串
  • dify安装
  • Linux中POSIX应用场景
  • 第4章 4.1 Entity Framework Core概述
  • 基于Java+Springboot+MySQL图书馆图书管理系统设计与实现
  • 力扣-回溯-39 组合总和
  • Python图像处理中的内存泄漏问题:原因、检测与解决方案
  • C#基础:使用Linq进行简单去重处理(DinstinctBy/反射)
  • Ubuntu 22.04 一键部署MinerU1.1.0
  • 计算机基础之操作系统——并发
  • 2017网站建设价目表/个人在线做网站免费
  • 网站seo设计方案案例/建站系统有哪些
  • 门户网站建设统计表/广州推广引流公司
  • 旅游网站开发注意点/青岛网站制作推广
  • 吉林省城乡建设部网站/济南seo优化
  • 沈阳世纪兴网站建设/网站排名优化教程