若依 ruoyi-vue 接口挂载获取Resources静态资源文件权限校验

解决小程序图片打包过大,放置后端,不引用ngnix、minio等组件,还能进行权限校验

在这里插入图片描述

package com.huida.web.controller.common.app;import com.huida.common.core.controller.BaseController;
import com.huida.common.utils.file.FileUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@RestController
@RequiredArgsConstructor
@RequestMapping("/static")
public class StaticResourcesController extends BaseController {@Autowiredprivate ResourceLoader resourceLoader;@GetMapping("/img/train/{fileName}")public void getImgTrain(@PathVariable String fileName, HttpServletResponse response) throws IOException {Resource resource = resourceLoader.getResource("classpath:static/img/train/" + fileName);if (resource.exists()) {response.setContentType(FileUtils.getContentType(resource.getFilename()));FileUtils.writeBytes(resource.getURI().getPath(), response.getOutputStream());}}@GetMapping("/img/{fileName}")public void getImg(@PathVariable String fileName, HttpServletResponse response) throws IOException {Resource resource = resourceLoader.getResource("classpath:static/img/" + fileName);if (resource.exists()) {response.setContentType(FileUtils.getContentType(resource.getFilename()));FileUtils.writeBytes(resource.getURI().getPath(), response.getOutputStream());}}}
  /*** 根据文件名,设置HttpServletResponse的ContentType** @param fileName 文件名* @return 结果* @author weimingzhong* @date 2024/4/3 9:50*/public static String getContentType(String fileName) {String fileExtension = getFileExtension(fileName);switch (fileExtension) {case "png":return MediaType.IMAGE_PNG_VALUE;case "jpg":case "jpeg":return MediaType.IMAGE_JPEG_VALUE;case "gif":return MediaType.IMAGE_GIF_VALUE;case "pdf":return MediaType.APPLICATION_PDF_VALUE;// Add more cases for other file types if neededdefault:return MediaType.APPLICATION_OCTET_STREAM_VALUE; // Default to octet-stream}}private static String getFileExtension(String fileName) {int dotIndex = fileName.lastIndexOf(".");if (dotIndex > 0 && dotIndex < fileName.length() - 1) {return fileName.substring(dotIndex + 1).toLowerCase();} else {return "";}}

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

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

相关文章

css 实现排行榜向上滚动

使用动画实现无线向上滚动 复制一层dom&#xff0c;使用动画向上滚动&#xff0c;鼠标hover的时候暂停动画 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthd…

vue $set()使用复习总结

一维数据&#xff1a; this.$set(数组, 下标, 内容); this.$set(this.typeList, 1, 榴莲); 数组对象&#xff1a; this.$set( target要更改的数据源(可以是对象或者数组), key要更改的具体数据, value重新赋的值 ) 用法一&#xff1a; 循环外&#xff0c;单独使用 用法二 &…

2024年【低压电工】考试试卷及低压电工模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年低压电工考试试卷为正在备考低压电工操作证的学员准备的理论考试专题&#xff0c;每个月更新的低压电工模拟考试祝您顺利通过低压电工考试。 1、【单选题】Ⅱ类手持电动工具是带有()绝缘的设备。&#xff08; …

解决IDEA 控制台中文乱码

运行某个项目时IntelliJ IDEA 控制台中文乱码&#xff0c;但其他的项目是正常的。接口文档也显示乱码&#xff1a; 一、修改 IntelliJ IDEA 全局编码、项目编码、属性文件编码 上方导航栏“File→Settings…”进入配置页面&#xff0c;在“Editor”中下滑找到“File Encodings…

Vue3:用Pinia的storeToRefs结构赋值store数据

一、情景描述 我们学习了Pinia之后&#xff0c;知道&#xff0c;数据是配置在Pinia的state里面的。 那么&#xff0c;如果有多个字段需要取出来使用&#xff0c;并且不丢失数据的响应式&#xff0c;如何优雅的操作了&#xff1f; 这里就用到了Pinia的storeToRefs函数 二、案…

git入门教程

Git 1. Git历史 同生活中的许多伟大事件一样&#xff0c;Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上&#xff08;1991&#xff0d;2002年间&#xff09;。到 2002…

证书生成和获取阿里云备案获取密钥流程

1.在java文件夹下 输入 cmd 打开命令行窗口 2. keytool -genkey -alias 证书名 -keyalg RSA -keysize 2048 -validity 36500 -keystore 证书名.keystore 输入这一行&#xff0c;把证书名三个字 改成 项目的名称&#xff08;例如&#xff1a;D23102802&#xff09; 3. 密码默认填…

传统海外仓的管理模式有什么缺点?使用位像素海外仓系统的海外仓有什么优势?

传统的海外仓管理模式主要需要大量的人工操作和相对简单的信息化手段进行仓库的日常运营。因此&#xff0c;传统海外仓的运作比较依赖仓库员工的手工记录、核对和处理各种仓储和物流信息。 然而&#xff0c;传统海外仓管理模式通常存在一些缺点&#xff1a; 效率低下 因为需…

蓝桥杯DFS自练三题-串变换,玩具蛇,分糖果

题目一:串变换 代码解析: #include <iostream> using namespace std; struct Option{int select;int x;int y; }; string S,T; int N,K;//N是串的长度&#xff0c;K是操作指令的大小 Option opt[10];//存储所有的指令 bool vis[10];//标记数组&#xff0c;重要&#xff…

端口敲击守护程序之DC-9

总结 getwebshell : 发现SQL注入 → 登录系统 → 疑似文件包含 → FUZZ参数 → 文件包含读取守护程序 → 敲击打开SSH端口 → 利用泄露账号密码登录 提 权 思 路 : 发现3个用户 → 登录获取密码字典 → 再次爆破获取第4个用户 → sudo文件发现 → 存在root权限写入功能 → pa…

具有温度系数(Temperature)的Softmax函数

Softmax 函数 softmax 函数是一种激活函数&#xff0c;通常用作神经网络最后一层的输出函数。该函数是两个以上变量的逻辑函数的推广。 Softmax 将实数向量作为输入&#xff0c;并将其归一化为概率分布。 softmax函数的输出是与输入具有相同维度的向量&#xff0c;每个元素的…

安卓java打包uniapp原生插件 和 uniapp使用安卓android原生插件

1.uniapp dcloud官方文档 简介 | uni小程序SDK 2.前提&#xff0c;需要有经验的安卓java开发人员&#xff0c;并且同时具备uniapp移动端开发经验。说明&#xff1a;android打包的.aar和uniapp需要的.aar是不一样的&#xff0c;uniapp需要的.aar是需要有一些特定配置的&#x…