当前位置: 首页 > article >正文

Jeecg,登录才能下载文件

本文针对Jeecg 3.8.2版本其他版本也基本通用可参考调整。1 背景上传到系统的文件可能会要求登录状态才能下载或者下载时须记录日志用于查看哪个用户什么时间下载了什么文件。但是系统默认的文件是上传到静态资源目录的即使前端页面看不到只要有链接就能下载。2 限权文件2.1 后端2.1.1 配置权限ShiroConfig.java文件中做如下修改Bean(shiroFilterFactoryBean) public ShiroFilterFactorBean shiroFilter(SecurityManager securityManager) { ... // 将“anon”改为“jwt” filterChainDefinitionMap.put(/sys/common/static/**, jwt); ... }2.1.2 返回文件内容CommonController.java文件修改如下GetMapping(value /static/**) public void view(HttpServletRequest request, HttpServletResponse response) { ... try { ... outputStream response.getOutputStream(); // Img目录下的不必鉴权 if (!imgPath.startsWith(Img/) !imgPath.startsWith(/Img/)) { // 登录用户才能下载 LoginUser loginUser (LoginUser) SecurityUtils.getSubject().getPrincipal(); if (loginUser null) { OutputStreamWriter writer new OutputStreamWriter(outputStream, UTF-8); BufferedWriter bufferedWriter new BufferedWriter(writer); bufferedWriter.write(未登录无法下载); response.setStatus(403); try { outputStream.close(); } catch (IOException e) { log.error(e.getMessage(), e); } return; } } ... } ... }2.2 前端window.open(url)改为downloadFileWithToken(url)即可。import { getToken } from //utils/auth; function downloadFileWithToken(url) { fetch(url, { method: GET, headers: { X-Access-Token: getToken(), } }).then(response { if (!response.ok) { throw new Error(response.statusText) } return response.blob(); }).then(blob { { // 将请求到的内容直接保存为文件 const blobUrl window.URL.createObjectURL(blob); const link document.createElement(a); link.href blobUrl; link.download url.indexOf(/) -1 ? url.split(/)[url.split(/).length - 1] : url; link.style.display none; document.body.appendChild(link); link.click(); document.body.removeChild(link); window.URL.revokeObjectURL(blobUrl); } }).catch(error { //createMessage.warning(error.message) }) }3 不限权文件用户头像等不想限制权限时另外配置即可。3.1 后端3.1.1 配置权限ShiroConfig.java文件中做如下修改Bean(shiroFilterFactoryBean) public ShiroFilterFactorBean shiroFilter(SecurityManager securityManager) { ... // 增加 filterChainDefinitionMap.put(/sys/common/static/Img/**, anno); // 将“anon”改为“jwt” filterChainDefinitionMap.put(/sys/common/static/**, jwt); ... }3.1.2 返回文件内容如2.1.2所示。3.2 前端upload.ts文件修改如下... export function uploadImg(params: UploadFileParams, onUploadProgress: (progressEvent: ProgressEvent) void) { // ----begin----上传到指定目录 if (params.data) { params.data { ...params.data, biz: Img } } else { params.data { biz: Img } } // ----end----上传到指定目录 return defHttp.uploadFileUploadApiResult( { url: /sys/common/upload, // 原先代码有误 onUploadProgress, }, params, { isReturnResponse: true } ); } ...

相关文章:

Jeecg,登录才能下载文件

本文针对Jeecg 3.8.2版本,其他版本也基本通用,可参考调整。1 背景上传到系统的文件,可能会要求登录状态才能下载,或者下载时须记录日志,用于查看哪个用户什么时间下载了什么文件。但是系统默认的文件是上传到静态资源目…...

本地大模型系列:1.配置本地lm Studio的大模型助手(another)

体验了一下lm studio,感觉lm studio对新手更加友好,它有一整套UI,并且设置比较完善,基本上可以靠点鼠标把事情做完了,包括模型下载、测试、网络接口、自身配置等。尽管部分高级功能需要登录且付费使用,但是…...

NBA 2000-2020 赛季球员数据可视化分析项目书

一、项目背景 NBA 是全球顶级篮球联赛,2000-2020 赛季是联盟从内线主导转向小球与三分时代的关键 20 年,球员数据海量且具备分析价值。球队与教练普遍存在:球员能力画像不清晰、不同打法 / 阵容效果难量化、人员轮换与资源配置不合理等问题。…...

员工AI培训别乱搞!漫无目的的课程等于“烧钱”没效果

“今年培训预算花了几十万,员工课听了不少,回头一问,什么也没落下。”这是上周一位培训总监跟我吐槽的话。他不是个例。AI火起来之后,很多企业都在搞培训,但效果却惨不忍睹。今天学Prompt,明天看Python&…...

2026年玩具喷涂废气治理优质厂家推荐榜

随着全球玩具产业向绿色制造转型,喷涂工序产生的VOCs(挥发性有机物)治理已成为企业合规生产的核心关卡。玩具喷涂废气具有“大风量、低浓度、含漆雾”的典型特征,同时苯系物、酯类等组分复杂,对治理设备的适配性与稳定…...

不懂技术怎么做题库小程序?我把经验写下来了,你看看

世界上最聪明的人,是借用别人撞的头破血流的经验,作为自己的经验。 不懂技术怎么做题库小程序?在我看来,分三种情况说一下,我把经验写下来了,你姑且勉为其难地看看吧。 想做一个题库小程序,同时…...

北京婚礼策划公司排名

对于正在筹备婚礼的北京新人而言,选择一家靠谱的婚礼策划公司无疑是头等大事。网络上所谓的“排名”往往主观且商业气息浓厚,与其追逐一个虚名,不如学会如何甄别,找到真正适合自己的品牌。本文将为您深入剖析,并重点推…...

人肉防火墙:用生理反应阻断黑客攻击——软件测试从业者的专业视角

在网络安全领域,传统防火墙和入侵检测系统已难以应对日益精密的黑客攻击。软件测试从业者作为系统安全的“第一道防线”,亟需创新工具来增强防御能力。本文提出“人肉防火墙”概念,即通过实时监测人体生理反应(如心率变异性、皮肤…...

打造Matlab交通标志识别系统:从代码到可视化GUI

matlab交通标志识别系统(含gui可视化界面,完整源码,代码配详细注释,程序实现识别交通标志图片并以文字形式输出结果) 附赠报告,代码结构清晰,有注释在智能交通系统日益发展的今天,交通标志识别技术成为了研…...

vscode用remote ssh连接服务器的流程

以下是一套完整、可落地的 VS Code Remote-SSH 离线部署 连接服务器流程,整合了之前的所有要点,适配新版 VS Code(高版本需 CLIServer 双包),覆盖从环境准备到验证连接的全环节: 一、前置准备 本地环境&…...

跨模态对比学习:CLIP模型优势的实验验证与分析

跨模态对比学习:CLIP模型优势的实验验证与分析 摘要 视觉-语言预训练模型CLIP通过对比学习实现了图像与文本的跨模态对齐,在零样本分类、图文检索等任务中展现出卓越性能。然而,CLIP的优势究竟源于其语言监督信号还是模型架构设计,仍是一个值得深入探究的问题。本文以CLI…...

交易积累-世界著名中间件和公司

下面列出了一些知名度高和广泛使用的技术组件,以及它们相应的现存公司,按照知名度和使用者数量进行排序: Meta Platforms, Inc. (之前称为 Facebook): React: 一个用于构建用户界面的JavaScript库,广泛用于前端开发。 React Nativ…...

西门子Smart200 PLC Modbus轮询通讯实现变频器控制

西门子smart200plc modbus轮询通讯 程序 1,读变频器的输出频率,输出电流。 输出转速, 2,写控制变频器启停,写给定变频器频率 3,提供接线图,提供变频器参数,提供地址, 4&…...

三次谐波注入 SPWM调制 matlab simulink 仿真 3相逆变器开关函数

三次谐波注入 SPWM调制 matlab simulink 仿真 3相逆变器开关函数 (1)推荐使用matlab 2016b及以上版本打开。 (2)该模型已经代为转换到各个常用版本。 【✨算法介绍】 (1)此仿真模型主要采用基于三次谐波注入的SPWM算法,用于三次谐波注入的SPWM算法的学习&#xff1b…...

ZS316搭配VL171 实现TypeC互转DP 8K60 设计方案

ZS316在Type-C转DP视频双向互传方案中扮演着核心角色ZS316是核芯引力科技针对USB Type-C标准中的Bridge设备而开发的USB-C DRP(Dual Role Port,双角色端口)接口通信芯片。该芯片集成了Type-C接口和DisplayPort(DP)转换…...

Claude Code详细安装教程【推荐方式-国内无忧】及阿里千问模型接入

1.认识Claude Code Claude Code是Anthropic公司推出的终端AI编程助手,当前包含Sonnet4.5、Haiku4.5和Opus4.1三个版本模型,其中Sonnet4.5专精复杂推理与自主编程,Haiku4.5针对高并发场景优化,Opus4.1适用于解决高复杂度技术问题。…...

怎么降AIGC率?学姐盘点3个好用的降AI工具及5个手改技巧指南

最近我发现很多同学都在苦恼降ai这件事,后台发来的截图里,那报告,简直红得触目惊心。 现在的系统早已是next level,不是看你用了什么词,而是在分析你的文本生成逻辑。今天这篇文章,我不讲虚的,…...

进来看看你对进程虚拟内存的了解有多深?

在 Linux 中,每个进程都好像是楚门,生活在一个别人为它精心构建的世界里,而它却以为自己独占了整个系统的内存空间。这正是内核通过虚拟内存机制实现的。 本文将带你穿过用户态的表象,深入 Linux 内核源码与底层硬件,分…...

分布式驱动汽车稳定性控制:分层式直接横摆力矩控制策略

分布式驱动汽车稳定性控制。 采用分层式直接横摆力矩控制,上层滑模控制,下层基于轮胎滑移率最优分配。 滑模控制跟踪横摆角速度和质心侧偏角误差。 七自由度整车模型输出实际质心侧偏角和横摆角速度,二自由度模型输出理想质心侧偏角和横摆角速…...

Python基于flask的在线学习考试组卷管理系统 带前台-可视化

目录系统架构设计核心功能模块智能组卷系统考试过程管理可视化数据分析技术实现路线部署方案项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作系统架构设计 采用前后端分离模式,前端使用HTM…...

Pandownload:百度网盘下载体验的悄然升级

百度网盘就像一个可靠的伙伴,帮我们存放海量照片、视频、文档和学习资料。它的分享链接一键传输、跨平台同步这些优点,让无数人离不开它。可一到下载环节,许多人就忍不住叹气:为什么明明资源就在那里,速度却慢得像老牛…...

新能源锂电涂布机应用案例:多轴伺服控制下的1500博图程序设计实践与西门子Basic触摸屏操作...

新能源锂电涂布机博图1500程序案例,有西门子Basic触摸屏案例同步,设计到多轴伺服运动控制,变频器控制,张力计算等。新能源锂电涂布产线的自动化控制,说白了就是多轴伺服、变频器、张力算法的协同作战。最近刚搞完一个用…...

Agent-Browser 简明教程

您的AI代理需要在网站上填写表单。使用传统的浏览器自动化工具,这个简单的任务仅为了描述页面结构就会消耗超过15,000个token。当您浏览三个页面时,上下文窗口会以比您使用它们更快的速度消耗token。 Agent-browser 来自 Vercel Labs 用根本不同的方法解…...

PID算法(3)- PID就是求【针对控制量的一个比例+积分+微分】的值

举例说明:通过PID算法实现电机转速的控制,控制量(控制目标)是电机的转速对电机转速的控制手段是PWM的占空,如下图所示:那么PID控制器的机制就是,将转速转化为PWM的占空比,而PID控制器经过PID算法&#xff0…...

勒索病毒专盯数据库? TDE 透明加密如何筑起“最后一道防线

标签:#TDE #勒索病毒防护 #数据库安全 #透明加密 #安当 #等保三级一、真实事件:勒索病毒没加密文件,却锁死了数据库 2025 年 10 月,我司一台部署在内网的 SQL Server 数据库服务器因员工点击钓鱼邮件,感染 LockBit 3.0…...

李哥深度学习班学习笔记——图像识别

一、导入依赖库​ import random #用于设置随机种子,保证实验可复现 import torch #Pytorh核心库,构建和训练神经网络 import torch.nn as nn #Pytorch神经网络层模块 import numpy as np #数值计算库,处理矩阵 import os #…...

Spring AI Alibaba学习记录(ChatModels篇)

目标:实现简单的聊天接口调用依赖配置(Maven)添加以下依赖:​ <dependencies> <!-- Spring AI Alibaba Agent Framework --><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-agent-framework</arti…...

SQL 客户端远程登录服务器详细操作教程

在日常开发和运维工作中&#xff0c;经常需要通过 SQL 客户端远程连接服务器上的 SQL Server 数据库&#xff0c;本文将详细讲解完整的配置和连接步骤&#xff0c;同时附上连接失败的排查方法&#xff0c;亲测有效&#xff0c;适合新手快速上手。一、服务器端 SQL Server 配置远…...

【备赛指南】2026全国大学生嵌入式大赛-ST赛道官方推荐,华清远见STM32U5/MP157开发板助你一臂之力!

第九届&#xff08;2026&#xff09;全国大学生嵌入式芯片与系统设计竞赛&#xff08;以下简称"大赛"&#xff09;已正式启动&#xff0c;报名火热进行中。作为教育部认证的国家级A类赛事&#xff0c;大赛历经九年积淀&#xff0c;已成为检验高校电子类专业人才培养质…...

vmd分解联合小波阈值降噪MATLAB代码。具体实现功能如下: 1.数据加载与预处理 数据从CSV文件读取并转换为数组,处理了多列数据的情况。 采样频率 Fs 设置为1000 Hz,这是后续时频分析的

vmd分解联合小波阈值降噪MATLAB代码。具体实现功能如下&#xff1a; 1.数据加载与预处理 数据从CSV文件读取并转换为数组&#xff0c;处理了多列数据的情况。 采样频率 Fs 设置为1000 Hz&#xff0c;这是后续时频分析的基础。 2.参数初始化 VMD分解参数&#xff08;如带宽约束 …...