若依框架下载文件

news2024/12/24 2:41:30

若依下载的逻辑是指定文件存储的路径,在ruoyi-admin模块下的application.yml中配置路径结尾必须要加'/'或者'\'结尾。
他使用的是虚拟路径映射,所以文件名必须是配置路径下真实的文件名。

若依采用的是流的方式,前端必须要用bolb的方式去接收,然后保存成本地文件

后端代码

参数一:配置路径下,真实的文件名。

参数二:是否下载后删除,false不删除。

    @Autowired
    RuoYiConfig RuoYiConfig;

    @GetMapping("/downloadZip")
    public void fileDownload(@RequestParam String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) {
        try {
            System.out.println("文件名称:" + fileName);
            if (!FileUtils.checkAllowDownload(fileName)) {
                throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
            }
            String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
            String filePath = RuoYiConfig.getDownloadPath() + fileName;

            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
            FileUtils.setAttachmentResponseHeader(response, realFileName);
            FileUtils.writeBytes(filePath, response.getOutputStream());
            if (delete) {
                FileUtils.deleteFile(filePath);
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.format("下载文件失败", e);
        }
    }

 前端代码

import request from '@/utils/request'

export const publishExportTemplateFile = (res, name, type = false) => {
  let url;
  if (type) {
    url = window.URL.createObjectURL(new Blob([res], {type: 'application/zip'}));
  } else {
    url = window.URL.createObjectURL(new Blob([res]));
  }
  // const url = window.URL.createObjectURL(new Blob([res]));
  const link = document.createElement('a');
  link.style.display = 'none';
  link.href = url;
  link.setAttribute('download', name);
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
}

export function downloadFile(filePath) {
  request({
    url: '/projectAch/pages/downloadZip',
    method: 'get',
    params: {fileName: filePath, delete: false},
    responseType: 'blob' // 设置响应类型为 blob
  })
    .then(response => {
      publishExportTemplateFile(response ,filePath);
    })
    .catch(error => {
      console.error('Download file failed:', error);
    });
}

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

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

相关文章

SystemC 学习之 VCS 仿真工具安装(八)

1、安装包下载 vcs、verdi 等工具下载地址(如果下载链接失效,可以私信我) 链接:https://pan.baidu.com/s/19CtwqWcxpv-4wPyAD4_ITw 提取码:3pib vcs-mx 下载地址 链接:https://pan.baidu.com/s/1dYELrG…

K8S知识点(九)

(1)Pod详解-结构和定义 一级属性有下面这些:前两个属性是字符串,上面有定义 kind:Pod version:v1 下面的属性是object 还可以继续查看子属性:二级属性 还可以继续查看三级属性: 通…

虹科示波器 | 汽车免拆检修 | 2010款奥迪A5车怠速时发动机偶尔自动熄火

一、故障现象 一辆2010款奥迪A5车,搭载CDN发动机,累计行驶里程约为16.3万km。车主进厂反映,发动机怠速偶尔出现抖动,紧接着自动熄火;重新起动,发动机又能正常工作;故障频率较低,有时…

第二证券:定增价公布后第二天股价表现?

近年来,定增成为一种较为老练的公司融资方法,它通过向指定政策定向发行股份来筹集资金,相关于非公开发行股票或增发股份,定增的市场轰动和价格变化相对较小。但是,定增股票发行通常会推动股价的不坚决和出资者的心境崎…

代码随想录算法训练营第五十天丨 动态规划part13

300.最长递增子序列 思路 首先通过本题大家要明确什么是子序列,“子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序”。 本题也是代码随想录中子序列问题的第一题,如果没接触过这种…

采购CRM系统,这些费用你知道吗?

近些年CRM软件市场规模高速发展,技术商数量和用户数都突飞猛进。市面上产品种类丰富,系统的价格也是差距很大,从几百块到几十万不等,尽管很多厂商的价格是公开的但部署CRM之后成本很快超出了预期,实施CRM系统都有哪些费…

Spring Data JPA方法名命名规则

最近巩固一下JPA,网上看到这些资料,这里记录巩固一下。 一、Spring Data Jpa方法定义的规则 简单条件查询 简单条件查询:查询某一个实体类或者集合。 按照Spring Data的规范的规定,查询方法以find | read | get开头&…

Java实现一个简单的贪吃蛇小游戏

一、创建新项目 首先创建一个新的项目,并命名为贪吃蛇。 其次在贪吃蛇项目下创建一个名为images的文件夹用来存放游戏相关图片。 用到的图片如下: 游戏标题: 贪吃蛇的身体: 贪吃蛇的头部: 因为要向四个方向移动&am…

VINS-Mono-后端优化 (四:边缘化原理)

滑窗中固定只能有11帧,当来了新的帧的时候旧的帧就需要抹掉,但是不能直接把旧的帧的全部信息抹掉,因为旧的帧的经历过11次优化,其地图点中的优化信息是有用,边缘化的操作就是为了只把最旧帧的变量去掉,但是…

霸榜“双11”,高端文创新品发布即售罄,剑南春大促节点再传佳绩

执笔 | 洪大大 编辑 | 萧 萧 作为一年一度的重要促销大节,“双11”线上购物已成为各大品牌奋战的重要战场。而在今年,剑南春也是再一次拔得头筹。 在刚刚出炉的“双11”战报中,天猫剑南春官方旗舰店以超高人气和销售量获得白酒行业交易指…

来看看电脑上有哪些不为人知的小众软件?

​ 电脑上的各类软件有很多,除了那些常见的大众化软件,还有很多不为人知的小众软件,专注于实用功能,简洁干净、功能强悍。 1.桌面停靠栏工具——BitDock ​ BitDock是一款运行在Windows系统中的桌面停靠栏工具,功能实…

RFID汽车制造工业系统解决方案

随着物联网技术的不断发展,汽车行业的信息化水平也在不断提高,随着近几年国产汽车的带动,汽车配件配套市场也已形成了一定的规模,初步形成比较完整成熟的零部件配套体系。 RFID汽车制造工业系统解决方案 与其他行业对比&#xff0…

【Springboot】基于注解式开发Springboot-Vue3整合Mybatis-plus实现分页查询(一)——后端实现思路

系列文章目录 基于注解式开发Springboot-Vue3整合Mybatis-plus实现分页查询(二)——前端el-pagination实现 文章目录 系列文章目录系统版本实现功能操作步骤1. 新建Mybatis的全局分页配置文件2. 编写OrderMapper :继承Mybatis-plus提供的BaseMapper3. 编写OrderSer…

UE基础必学系列:项目和文件结构

官方文档:https://learn.unrealengine.com/course/ 张佳亮:UE4插件相关说明文档 1、uproject,以商城下载的ActionRPG为例 {"FileVersion": 3,"EngineAssociation": "4.20","Category": "Samples","Description&qu…

​《水经注全国三维离线GIS系统》硬件安装教程

有些工作,是需要一些外在动力才能完成的。 为什么这么讲呢? 因为正是在客户的要求下,我们才撰写了《水经注全国三维离线GIS系统》的硬件安装教程,而且还录制了视频教程。 当用户收到货物以后,就可以通过本教程清点货…

医学影像PACS系统:一种用于存储、管理和传输医学影像数据的系统

医疗软件中的影像归档与传输系统软件(Picture Archiving and Communication System,简称PACS)是一种用于存储、管理和传输医学影像数据的系统。 PACS是应用在医院影像科室的系统,主要的任务就是把日常产生的各种医学影像&#xff…

excel记录wFm数值(推理过程)

1 导入计算wfm库2 实例化具体的指标 3 列表循环之前,设置空list 4 单图评测-将图号、图片名、数值记录 列表里面存储dict 5 将excel列表结果逐个存入excel.xlsx文件 完整代码 test_CPD.py ### test_CPD.py ### import torch import torch.nn.functional as Fimpor…

卷积神经网络(CNN)-吴恩达

1 计算机视觉 得益于深度学习的发展,计算机视觉是发展的最好的领域之一。 计算机视觉包括图像分类、 目标检测、神经风格转换 1、图像分类,有时也叫图像识别 2、计算机视觉问题的一个挑战是输入可以是任意大 2 边缘检测例子 1、卷积运算是卷积神经网络…

深度神经网络算子参数量和计算量分析—卷积篇

前言 在用于计算机视觉任务的深度神经网络模型中,卷积算子作为一种重要的特征提取方式被广泛应用,本文针对常见的卷积算子参数量和计算量的计算方法进行分析,主要包括普通卷积、深度可分离卷积、分组卷积,以及自动计算模型参数量和…

无人机交付:跨境电商的数字化未来

随着科技的不断进步,跨境电商行业正经历着前所未有的数字化变革。其中,无人机交付正成为这一领域的未来之路,为电商企业和消费者带来了新的便利和机遇。本文将深入探讨无人机交付在跨境电商中的应用,以及它如何塑造数字化未来。 无…