从后端获取文件数据并导出

导出文件的公共方法

export const download = (res, tools) => {const { message, hide } = tools;const fileReader: any = new FileReader();console.log('fileReader-res>>>', res);fileReader.onload = (e) => {if (res?.data?.type === 'application/json') {try {const jsonData = JSON.parse(fileReader.result);if (jsonData?.success === false && jsonData?.message) {hide?.();message.error(jsonData?.message);}} catch (error) {hide?.();message.error(getLocalTextFun('common.export.error'));}} else {try {const filename = (res.response.headers.get('content-disposition').split('filename=')?.[1] || '').replace(/"/g, '');if ('msSaveOrOpenBlob' in navigator) {window.navigator.msSaveOrOpenBlob(res.data, decodeURI(filename));} else {const blob = new Blob([res.data]);const url = window.URL.createObjectURL(blob);const link: any = document.createElement('a');link.href = url;link.download = decodeURI(filename);link.click();hide?.();window.URL.revokeObjectURL(url);}} catch (err: any) {hide?.();message.error(getLocalTextFun('common.export.error'));}}};try {fileReader.readAsText(res.data);} catch (e) {hide?.();message.error(getLocalTextFun('common.export.error'));}
};

请求后端接口

const hide = message.loading(`加载中...`, 0);
const res = await exportI18nByLocal(record.locale);
download(res, {message, hide});

接口请求

export async function executeAndTryCatch(func: any) {try {return await func();} catch (error: any) {return error;}
}
export function exportI18nByLocal(locale:string) {return executeAndTryCatch(() =>request<Record<string, any>>(`${api().i18nExport}?locale=${locale}`, {method: 'GET',responseType: 'blob',//'Accept': 'application/vnd.ms-excel', 导出文件是excelheaders: {'Accept': 'application/vnd.ms-excel',"locale": locale},//  获取返回数据结构里面包含response数据 如下图getResponse: true,}).then((res: any) => judgeErrorByResponseType(res)),);
}

接口返回结果
在这里插入图片描述

判断文件是否导出失败

function judgeErrorByResponseType(response: any) {const res = response.response;return new Promise((resolve, reject) => {if (!res) resolve('');if (res.headers.get('Content-Type').includes('json')) {const reader = new FileReader();reader.onload = () => {const { result }: any = reader;const errorInfos = JSON.parse(result);resolve(errorInfos);};reader.onerror = (err) => {reject(err);};reader.readAsText(response.data);} else {resolve(response);}});
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/761902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker方式进行pytorch多机多卡分布式训练

docker ip共享与gpu指定 1)ip共享 docker网络有多种,这里选择host直接用宿主机的ip 2)指定gpu docker方式进行pytorch多机多卡分布式训练 nvidia docker 容器介绍链接:https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/ docker用的nvidia官方镜像…

Pytorch: torch.mean()

在PyTorch中&#xff0c;函数 torch.mean 用于计算张量的平均值&#xff08;均值&#xff09;。其可以对整个张量计算平均值&#xff0c;也可以沿某个或多个维度计算平均值。这个操作对于正则化数据、在神经网络中进行层间规范化等场合特别有用。 例子如下&#xff1a; impor…

复试专业前沿问题问答合集1

复试专业前沿问题问答合集1 人工智能基础知识问答 Q1: 什么是人工智能(AI)? A1: 人工智能(AI)是计算机科学的一个分支,它涉及创建能够执行通常需要人类智能的任务的机器和软件。这些任务包括学习(获取信息并根据信息对其进行规则化以达到结论)、推理(使用规则达到近…

数字孪生与智慧城市:重塑城市生活的新模式

随着信息技术的迅猛发展&#xff0c;数字孪生作为一种新兴的技术理念&#xff0c;正在逐渐改变城市建设和管理的传统模式。智慧城市作为数字孪生技术应用的重要领域&#xff0c;正在以其独特的优势和潜力&#xff0c;重塑着城市生活的方方面面。本文将从数字孪生的概念、智慧城…

中文编程入门(Lua5.4.6中文版)第十一章 Lua 模块与包 参考星争际霸游戏

在遥远的星争际霸世界中&#xff0c;代码模块就如同星际基地中的高科技仓库&#xff0c;储存着各类经过封装优化的战术指令和战略资源。自Lua 5.1版本起&#xff0c;星际编程者们引入了标准化的模块管理系统&#xff0c;使得不同战舰之间能够共享和调用核心战斗算法&#xff0c…

StarRocks学习笔记

介绍场景建表明细模型聚合模型更新模型主键模型 介绍 StarRocks是一款经过业界检验、现代化&#xff0c;面向多种数据分析场景的、兼容MySQL协议的、高性能分布式关系型分析数据库。 StarRocks充分吸收关系型 OLAP 数据库和分布式存储系统在大数据时代的优秀研究成果&#xff…

Linux命令:ps命令

目录 1 ps命令1.1 简介1.2 说明1、选项&#xff1a;2、输出格式控制&#xff1a;3、输出修饰符&#xff1a;4、显示线程&#xff1a;5、进程状态码&#xff1a;6、AIX 格式描述符7、标准格式指定符 1.3 实例1、默认输出2、使用标准语法查看系统上的每个进程3、使用BSD语法查看系…

算法体系-14 第十四 贪心算法(上)

一 、 递归套路解决判断完全二叉树 1.1 描述 1.2 分析 1.3 代码 public static boolean isCBT2(Node head) {return process(head).isCBT;}public static class Info {public boolean isFull;public boolean isCBT;public int height;public Info(boolean full, boolean cbt…

UI自动测试框架-selenium(1) selenium介绍和选择器

目录 1.selenium是什么 2.定位元素 2.1 css选择器 2.1.1 选择id 2.1.2 class 2.1.3使用标签选择 2.1.4父类选择器 子类选择器 2.2 xpath 1.selenium是什么 selenium是用来做web端自动化测试的框架,它支持各种游览器,各种平台,支持各种语言(如 Python,Java,C#,JS,Ruby..…

[flask]flask的路由

路由的基本定义 路由就是一种映射关系。是绑定应用程序&#xff08;视图&#xff09;和url地址的一种一对一的映射关系&#xff01;在开发过程中&#xff0c;编写项目时所使用的路由往往是指代了框架/项目中用于完成路由功能的类&#xff0c;这个类一般就是路由类&#xff0c;…

全国产飞腾+FPGA架构,支持B码+12网口+多串电力通讯管理机解决方案

行业痛点: 中国的电力网络已经成为当今世界覆盖范围最广、结构最为复杂的人造科技系统。随着国家和各部委颁布了一系列法律法规&#xff0c;如国家颁布的《中华人民共和国网络安全法》、工信部颁布的《工业控制系统信息安全防护指南》、发改委颁布的14号令《电力监控系统安全防…

基于微信小程序的电影票务系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

python智慧农业小程序flask-django-php-nodejs

当今社会已经步入了科学技术进步和经济社会快速发展的新时期&#xff0c;国际信息和学术交流也不断加强&#xff0c;计算机技术对经济社会发展和人民生活改善的影响也日益突出&#xff0c;人类的生存和思考方式也产生了变化。传统智慧农业采取了人工的管理方法&#xff0c;但这…

[C#] Xml 非法字符处理方法

Xml 非法字符处理方法 根据W3C的标准&#xff1a; //x00-//x08 //x0b-//x0c //x0e-//x1f 不允许出现在xml文件中。 解决办法 xml 处理前 替换非法字符 public static string ReplaceIllegalXmlCharacters(string xml) {// 使用正则表达式匹配非法字符&#xff0c;并进行替换…

python自定义日历库,与对应calendar库函数功能基本一致

目录 自定义日历库 常用列表 日期列表 常用函数 闰年判断 月份天数 元旦序号 日历表头 星期序号 序号及天数 月历字串 打印月历 年历字串 打印年历 对比测试 测试结果 完整代码 运行结果 自定义日历库 自定义日历库函数&#xff0c;并使得其与python calend…

国际期货英文版配资系统/VUE源码包搭建

要搭建一个国际期货英文版配资系统的Vue源码包&#xff0c;你需要遵循一系列的开发步骤。这涉及到前端和后端的开发&#xff0c;以及确保系统的安全性、稳定性和可扩展性。以下是一个大致的指南&#xff0c;帮助你开始这个项目&#xff1a; 1. 需求分析 用户角色与权限&#…

在 CentOS 7 下使用 Ansible Playbook 实现 MySQL 8.0.34 的二进制安装

要在 CentOS 7 下使用 Ansible Playbook 实现 MySQL 8.0.34 的二进制安装&#xff0c;需要先下载 MySQL 8.0.34 的二进制包&#xff0c;并将其上传至目标服务器。 以下是基于二进制包安装的一个简化示例 Playbook&#xff1a; --- # mysql8_binary_install_playbook.yaml- nam…

【SpringBoot】登录校验之会话技术、统一拦截技术

真正的登录功能应该是&#xff1a; 登陆后才能访问后端系统页面&#xff0c;不登陆则跳转登陆页面进行登陆。 当我们没有设置登录校验&#xff0c;可以直接通过修改地址栏直接进入管理系统内部&#xff0c;跳过登录页。而后端系统的增删改查功能&#xff0c;没有添加判断用户是…

DECO: Query-Based End-to-End Object Detection with ConvNets 学习笔记

论文地址&#xff1a;https://arxiv.org/pdf/2312.13735.pdf源码地址&#xff1a;https://github.com/xinghaochen/DECO 近年来&#xff0c;Detection Transformer &#xff08;DETR&#xff09; 及其变体在准确检测目标方面显示出巨大的潜力。对象查询机制使DETR系列能够直接获…

Semi-supervised Open-World Object Detection

Semi-supervised Open-World Object Detection 摘要1 介绍2.准备工作提出的SS-OWOD问题设置2.1 基础架构3 方法3.1整体架构摘要 传统的开放世界对象检测(OWOD)问题设置首先区分已知和未知类别,然后在后续任务中引入标签时逐步学习未知对象。然而,当前的OWOD公式在增量学习…