首页 > 其他分享 >接收文件流并导出至excel以及对二进制文件流内容的校验

接收文件流并导出至excel以及对二进制文件流内容的校验

时间:2024-03-30 09:01:41浏览次数:19  
标签:文件 const res excel 校验 blob reader data

废话不说 上代码

const handleRightDownload = async () => {
  axios({
    method: 'post',
    url: '/my/handleAndDownloadExcel', // 请求地址 这里写后端的地址,注意加上`/api`以确保最终的请求能被替换掉 ,/api表示server要替换的前缀 '/api' ->  ''
    data: {
       fileid:my.id  //额外参数
    },  
    headers: {
      // 请求头
      Authorization: `Bearer ${token}`,   // 这里要加上token防止401无权限
      'Content-Type': 'application/json;charset=utf-8'
    },
    responseType: 'blob' // 表明返回服务器返回的数据类型,关键代码,不加则会返回json格式
  }).then(async (res) => {
    console.log('res :>> ', res)
    console.log(' res.data :>> ', res.data)
    const blob = new Blob([res.data], {
      type: res.headers['content-type']
    })
    const reader = new FileReader()
//此if语句为了判断返回的二进制对象是不是正常的文件流形式, 如果后端返回的是{code:-1,msg:`模板错误` }诸如此类则会在这里被捕获到,也就没必要走下去了
    if (blob.type.indexOf('application/json') > -1) {
      reader.readAsText(blob)
      reader.onload = (e) => {
        let text = e.target.result
        if (typeof text == 'string') {
          var errInfo = JSON.parse(text)
          MessagePlugin.error({
            content: errInfo.msg,
            duration: 2000
          })
        }
      }
      return
    }
// 正常态,则开始本地下载流程
    const newBlob = res.data
    reader.readAsDataURL(newBlob) // 转换为base64,可以直接放入a标签href
    reader.onload = function (e) {
      var a = document.createElement('a') // 转换完成,创建一个a标签用于下载
      a.download = `${currentFileName.value}.xlsx`
      a.href = e.target.result
      document.body.appendChild(a)
      a.click()
      a.remove()
    }
    MessagePlugin.success(`文件:${currentFileName.value}.xlsx导出成功`)
  })

  //
}

标签:文件,const,res,excel,校验,blob,reader,data
From: https://www.cnblogs.com/hjk1124/p/18105002

相关文章

  • 新增文章参数校验-2024-3-29
    用到validation自定义校验packagecom.di.bigevent.pojo;importcom.di.bigevent.anno.State;importjakarta.validation.constraints.NotEmpty;importjakarta.validation.constraints.NotNull;importjakarta.validation.constraints.Pattern;importlombok.Data;imp......
  • Excel 如何批量将矩阵(多行多列)数据转为单行或单列数据
    该问题源于这样一个实践场景,试想有一个花名册,如下这样:现在需要根据这个花名册批量将其转换为考试时贴在桌上的小标签,如下这样:那么这个需求本质上就是将多行多列数据(考生姓名、考生编号、证件号码三列)转为单列数据(上图需求结果的第二列)。第一列是静态数据,第三列是递增数列,相对......
  • 【零基础C语言】文件操作
    目录 理解文件操作 什么是文件 程序文件 数据文件 文件名字 二进制文件和文本文件 文件的打开和关闭 文件的打开和关闭操作实验1,打开一个文件并且输入26个字母 打开读取文件text.txt,并且将它拷贝进text_cpy.txt 使用fputs和fgets函数 使用fprint......
  • Python 基于 xlsxwriter 实现百万数据导出 excel
    追加导出+自动切换sheet⚠️excel中的每个sheet最多只能保存1048576行数据#获取项目的根路径rootPathcurPath=os.path.abspath(os.path.dirname(__file__))rootPath=curPath[:curPath.find(你的项目名称+"/")+len(你的项目名称+"/")]#临时文件l......
  • Python 基于 xlsxwriter 实现百万数据导出 excel
    增量导出+自动切换sheet⚠️excel中的每个sheet最多只能保存1048576行数据#获取项目的根路径rootPathcurPath=os.path.abspath(os.path.dirname(__file__))rootPath=curPath[:curPath.find(你的项目名称+"/")+len(你的项目名称+"/")]#临时......
  • 第16期 Double Commander 开源免费的Total Commander替代型【体验100款文件管理工具】
     体验背景:我们正在做一款文件版本管理软件,追光几何(追光几何),期待以最无感的方式,解决新一代工程师文件管理的问题,让大家有更多时间去做快乐和有成就感的事情。所以打算体验100款文件管理软件,来取长补短。真实1h体验DoubleCommander是一款开源的跨平台文件管理软件,灵感来源......
  • //拷贝文件夹 //将file1文件夹中的数据拷贝到文件夹file2中
    //拷贝文件夹//将file1文件夹中的数据拷贝到文件夹file2中publicclassFileDemo1{publicstaticvoidmain(String[]args)throwsIOException{//拷贝文件夹//将file1文件夹中的数据拷贝到文件夹file2中Filefile1=newFile("D:\\file......
  • 文件-Python
    师从黑马程序员文件编码 不同编码,将内容翻译成二进制也是不同的查看文件编码文件的读取文件的概念文件操作内容主要包括打开,关闭,读,写文件的操作步骤open()打开函数mode常用的三种基础访问模式读操作相关方法读操作相关方法close()关闭文件对象wi......
  • 打印指定路径下所有文件的具体路径
    打印指定路径下所有文件的具体路径importosinput_path='./'path_file=open('path_file','w')forroot,dirs,filesinos.walk(input_path):forfileinfiles:path_file.write(os.path.join(root,file)+'\n')path_f......
  • 如何给PDF文件加密?
    PDF作为一种常用的文档格式,本身具有很好的稳定性以及兼容性,被广泛应用于学习以及生活当中。然而,这也意味着PDF文件的安全性成为了一个不可忽视的问题。因此,进行PDF加密操作变得至关重要。那么有那些好用的pdf加密的工具呢?1、nitropdf.com这是一款功能强大的PDF编辑软件,你可以使......