js 将二进制文件流,下载为excel文件

server/2024/9/24 3:46:56/

吃西瓜

现成的粒子

二进制流,是一种计算机文件格式,它的数据以二进制形式存储,与文本文件不同,

二进制文件可以包含任意类型的数据,例如:图像、音频、视频、可执行文件、压缩文件等,而文本文件则仅仅包含 ASCII 码或其他编码的字符数据。

  • 常见的: ‘Blob、ArrayBuffer、File、FileReader 和 FormData’
  • 在浏览器中长这样:
    在这里插入图片描述



blobType 指的是,服务端返回的 Content-Typemine-type
常用的excel类型一般有2种:application/vnd.ms-excelapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet

如:
在这里插入图片描述

javascript">
export const filmOrderExcelOut = (parameter: Record<any, any>) => {return request({method: 'post',url: Api.filmOrderExcelOut,data: parameter,responseType: 'blob'   `【一定得加这个】`})
}--------------------------------------------------------------------// 导出表格
const exportExcel = async () => {try {let { data } = await orderApi.filmOrderExcelOut(searchParams.value)let blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })let file = new File([blob], '订单.xlsx', {lastModified: new Date() as any,type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'})// console.log('file=', file)const a = document.createElement('a')a.style.display = 'none'document.body.appendChild(a)const url = URL.createObjectURL(file)a.href = urla.download = file.namea.click()// 清理document.body.removeChild(a)URL.revokeObjectURL(url)} catch (error) {message.error('网络请求发送失败~')}
}

出错的地方

  • 问题:成功将文件流转换成了excel文件,并下载了,但是下载后的文件打不了!!!
  • 原因:就是因为请求接口时,少了这个 responseType: 'blob' 配置项
javascript">export const filmOrderExcelOut = (parameter: Record<any, any>) => {return request({method: 'post',url: Api.filmOrderExcelOut,data: parameter,responseType: 'blob'   `【一定得加这个】`})
}`responseType`:表示,服务器响应的数据类型,可以是 'arraybuffer''blob''document''json''text''stream'
  • arraybuffer:设置响应类型为二进制对象【返回的是一个包含二进制数据的 JavaScript ArrayBuffer 类型化数组】
  • blob:设置响应类型为二进制对象【返回的是一个包含二进制数据的 Blob 对象】
  • document: 设置响应类型为html document 或 xml document,具体根据接收到的数据的 MIME 类型而定
  • json: 设置响应类型为json类型,日常开发中常用
  • text:设置响应类型为text文本类型

http://www.ppmy.cn/server/121150.html

相关文章

Kotlin 基本介绍(二)

导读大纲 1.1 使用 Kotlin 工具1.1.1 设置和运行 Kotlin 代码JAVA 到 KOTLIN 转换器 1.1.2 编译 Kotlin 代码KOTLIN/JVM 的编译过程 1.1 使用 Kotlin 工具 可以在线运行小片段或安装集成开发环境 1.1.1 设置和运行 Kotlin 代码 使用 IntelliJ IDEA 或 Android Studio 可以获得…

聚观早报 | 小米三折叠手机专利曝光;李斌谈合肥投资蔚来

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 9月20日消息 小米三折叠手机专利曝光 李斌谈合肥投资蔚来 索尼PS5 Pro包装亮相 新一代Spectacles AR眼镜发布 通…

Lanterns (dp 紫 线段树 二分 维护dp)

Lanterns - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 让所有点被覆盖&#xff0c;那么状态可以设计成覆盖一段前缀&#xff0c;并且中间不允许出现断点 由于CF崩了&#xff0c;所以暂时没提交代码。 记f(i) 为前 i 个灯笼点亮的最长前缀。 由于答案具有保留性&#xff…

网页打开时,下载的文件svg+xml类型有什么作用?

‌SVG文件在网页设计中的主要作用包括清晰度、多功能性、较小的文件大小以及可访问性和包容性。‌ ‌清晰度‌&#xff1a;SVG文件可以无限扩展&#xff0c;这意味着您可以根据需要调整其大小而不会失去清晰度。与光栅图像相比&#xff0c;SVG文件在放大时不会出现模糊或颗粒感…

Java集合(Map篇)

一.Map a.使用Map i.键值&#xff08;key-value&#xff09;映射表的数据结构&#xff0c;能高效通过key快速查找value&#xff08;元素&#xff09;。 ii.Map是一个接口&#xff0c;最常用的实现类是HashMap。 iii.重复放入k-v不会有问题&#xff0c;但是一个…

LeetCode 滑动窗口 滑动子数组的美丽值

滑动子数组的美丽值 给你一个长度为 n 的整数数组 nums &#xff0c;请你求出每个长度为 k 的子数组的 美丽值 。 一个子数组的 美丽值 定义为&#xff1a;如果子数组中第 x 小整数 是 负数 &#xff0c;那么美丽值为第 x 小的数&#xff0c;否则美丽值为 0 。 请你返回一个包含…

LeetCode从入门到超凡(二)递归与分治算法

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年9月学习赛的LeetCode学习总结文档&#xff1b;在算法设计中&#xff0c;递归和分治算法是两种非常重要的思想和方法。它们不仅在解决复杂问题时表…

vue scoped解析

不加scoped 加上scoped 从上面的图可以看出&#xff0c;给style加上scoped之后&#xff0c;会给这个模块的所有元素都加上一个自定义属性data-v-xxxx&#xff0c;这个xxxx就是这个文件的相对路径加上文件名生成的hash值&#xff0c;这样就能保证自定义属性独一无二 给所有元…