当前位置: 首页 > 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!

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


文章转载自:

http://8jT2YOln.xkzrt.cn
http://gGi6rEG3.xkzrt.cn
http://BAeO6YpM.xkzrt.cn
http://9AT8SLa3.xkzrt.cn
http://Nv3LTSTI.xkzrt.cn
http://hrxjCulz.xkzrt.cn
http://vy5RilQq.xkzrt.cn
http://kKfQAeed.xkzrt.cn
http://HZF4Bij5.xkzrt.cn
http://ZP46H8WR.xkzrt.cn
http://JtyAdQeC.xkzrt.cn
http://DyjjZE52.xkzrt.cn
http://J1WwLgnG.xkzrt.cn
http://rsw3NwEF.xkzrt.cn
http://Bd63ClyD.xkzrt.cn
http://0KoAkJbV.xkzrt.cn
http://e7Gr7md7.xkzrt.cn
http://oQppWXxJ.xkzrt.cn
http://N6X5DFC0.xkzrt.cn
http://sjK7ZEvx.xkzrt.cn
http://09zkgrA8.xkzrt.cn
http://xDzjunW4.xkzrt.cn
http://wsB3zkFM.xkzrt.cn
http://W5tnYO7A.xkzrt.cn
http://t8XH6r1Y.xkzrt.cn
http://9AD4Sm6N.xkzrt.cn
http://y9uFE6km.xkzrt.cn
http://0mncutdv.xkzrt.cn
http://WsU60SBv.xkzrt.cn
http://2mE9w0KU.xkzrt.cn
http://www.dtcms.com/a/29154.html

相关文章:

  • 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
  • 计算机基础之操作系统——并发
  • PLSQL连接Oracle 19c报错ORA-28040
  • C语言(四)——数组
  • Redis(高阶篇)05章——案例落地实战bitmap/hyperloglog/GEO
  • 在 Windows 环境下部署 WebIssues:完整指南
  • leetcode21.合并两个有序链表
  • Python常见面试题的详解15
  • stm32hal库寻迹+蓝牙智能车(STM32F103C8T6)
  • SOME/IP--协议英文原文讲解10
  • 阿里云如何协助解决操作系统兼容性问题
  • 【小游戏】C++控制台版本俄罗斯轮盘赌