RuoYiConfig新增一个路径存储用户头像

/** 上传头像路径 */
private static String userAvatar;
public static String getUserAvatar() {return userAvatar;
}public  void setUserAvatar(String userAvatar) {RuoYiConfig.userAvatar = userAvatar;
}
/*** 获取头像上传路径*/
public static String getUserAvatarPath()
{return getUserAvatar() + "/avatar";
}

自己重写一个别用它的upload,

/*** 头像上传*/
@Log(title = "用户头像", businessType = BusinessType.UPDATE)
@PostMapping("/avatar")
public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws Exception
{if (!file.isEmpty()){LoginUser loginUser = getLoginUser();String avatar = FileUploadUtils.uploadUserAvatar(RuoYiConfig.getUserAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION);if (userService.updateUserAvatar(loginUser.getUsername(), avatar)){AjaxResult ajax = AjaxResult.success();ajax.put("imgUrl", avatar);// 更新缓存用户头像loginUser.getUser().setAvatar(avatar);tokenService.setLoginUser(loginUser);return ajax;}}return error("上传图片异常,请联系管理员");
}

public static final String uploadUserAvatar(String baseDir, MultipartFile file, String[] allowedExtension)throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,InvalidExtensionException
{int fileNamelength = Objects.requireNonNull(file.getOriginalFilename()).length();if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH){throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);}assertAllowed(file, allowedExtension);//String fileName = extractFilename(file);String fileName = file.getOriginalFilename();String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath();file.transferTo(Paths.get(absPath));return getPathFileNameUserAvatar(baseDir, fileName);
}

public static final String getPathFileNameUserAvatar(String uploadDir, String fileName) throws IOException
{int dirLastIndex = RuoYiConfig.getUserAvatar().length() + 1;String currentDir = StringUtils.substring(uploadDir, dirLastIndex);return Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName;
}

标红的改成你的getUserAvatar()

 

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

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

相关文章

hcia datacom学习(12):vlan间路由

不同vlan相当于不同网段,如果vlan间没有三层技术,那么它们就无法互相通信。 vlan间路由可以有3种方式: 1.直接使用路由器转发 *路由器本身不需要额外设置,只需配置端口ip作为网关即可。 *路由器不能处理带有vlan标签的数据帧&a…

IP、掩码、网关、DNS1、DNS2到底是什么东西,ping telnet测试

IPV4里面的IP、掩码、网关、DNS1、DNS2到底是什么东西?请用通俗的大白话来解释,让农民都能看懂 好的,我来尝试用大白话解释一下IPV4里面的IP、掩码、网关、DNS1、DNS2是什么东西。 首先,我们可以把互联网想象成一个巨大的农村,每个家庭(电脑或设备)都需要有一个地址,这…

springboot3 一些听课笔记(1)

文章目录 一、日志框架二、springboot 自动配置三 、springweb3.13.2 自己编写一个messageconvert3.2.2 如果我们想让其支持yaml格式呢? 一、日志框架 springboot底层 默认使用logbacksjf4j作为日志框架。 1、每个 starter 场景,都会导入一个核心场景 …

10_JavaWeb过滤器

文章目录 过滤器1.过滤器的实现1.1 实现过滤器1.2 配置过滤器1.2.1 过滤器的xml方式1.2.2 过滤器的注解方式 2. 过滤器的生命周期3. 过滤器链使用 过滤器 生活举例: 公司前台,停车场安保,地铁验票闸机 java中过滤仅仅是对请求做出过滤 客户端向服务器发出请求,在服…

Java微服务实战:使用Spring Boot构建高效服务

引言 在当今的软件开发实践中,微服务架构已成为推动快速开发和部署的关键因素之一。与传统的单体应用相比,微服务架构提供了更高的灵活性和可维护性。本文将探讨如何使用Java和Spring Boot来构建一个微服务应用,介绍基本概念,并通…

Jail管理器AppJail的使用@FreeBSD

Jail的简介 Jail是FreeBSD操作系统中一个功能强大的安全机制,自FreeBSD 4.X版本起便投入使用,并且随着系统的发展,其功能、效率、稳定性和安全性得到了持续的强化。 Jail基于chroot的概念,通过更改一系列程序的根目录&#xff0…

Python爬虫之BeautifulSoup模块

Python爬虫之BeautifulSoup模块 在网络爬虫的世界里,获取网页内容只是第一步。真正的挑战在于从HTML的大海中提取出你需要的信息。这就是BeautifulSoup发光发热的地方。作为Python中最受欢迎的HTML解析库之一,BeautifulSoup以其强大的功能和易用性赢得了…

基于包围盒的机械臂防碰撞算法matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 5.完整工程文件 1.课题概述 基于包围盒的机械臂防碰撞算法。在实际情况中,由于很多对象结构较为复杂,当目标对象与障碍物之间的包围盒相交的时候,而两个物体并不相交。这就需要进一步划…

初始化git项目,并推送到github上

git推送到github上 要将当前的Git项目推送到GitHub上,可以按照以下步骤进行操作: 在GitHub上创建一个新的仓库。请确保你已经登录到你的GitHub账号,并点击页面右上角的" New repository"按钮来创建一个新的仓库。根据提示填写仓库…

js 一维数组转多维数组

效果图: //源数组const arrList [{"id": 1,"code": "001","name": "第一个","parentCode": "",},{"id": 2,"code": "00101","name": "第一…

嵌入式系统日志轮转:实现与性能考量

日志轮转是嵌入式系统中管理日志文件的一种常用技术,它通过创建新的日志文件来替代旧的日志文件,从而避免日志文件无限增长,占用过多存储空间。本文将探讨日志轮转的实现方法以及在嵌入式系统中实现日志轮转时需要考虑的性能因素。 一、日志…

springboot项目中第三方jar包打包进jar包

springboot项目中,如果手动引入了jar包,打包时不会将手动引入的第三方jar包打包进价包里,如何处理? 若第三方的jar包的lib和src同级,则maven打包时默认不会将lib下的jar包打包进jar包,处理方式有两种&#…

Golang | Leetcode Golang题解之第133题克隆图

题目: 题解: func cloneGraph(node *Node) *Node {if node nil {return node}visited : map[*Node]*Node{}// 将题目给定的节点添加到队列queue : []*Node{node}// 克隆第一个节点并存储到哈希表中visited[node] &Node{node.Val, []*Node{}}// 广…

nginx --- 反向代理|负载均衡 | 动静分离

目录 反向代理如何配置 1、反向代理实例一 2、反向代理实例二 ocation 指令说明 Nginx 负载均衡 负载均衡常用算法 应用场景 总结 Nginx实现动静分离 一、什么是动静分离 二、实现方案 三、配置Nginx动静分离 四、验证测试 反向代理如何配置 1、反向代理实例一 实…

视频怎么压缩变小?推荐三个压缩方法

视频怎么压缩变小?在数字时代,视频已成为我们日常生活和工作中不可或缺的一部分。然而,随着视频质量的提升,视频文件的大小也随之增加,这给存储和分享带来了不小的挑战。幸运的是,市面上有许多视频压缩软件…

2024首发!会声会影2024旗舰版,专业编辑新体验!

会声会影2024最新旗舰版是一款专业的视频编辑软件,它集成了多种高级功能,为用户带来极致的视频编辑体验。在这篇文章中,我们将详细介绍该软件的功能和特色,帮助用户更好地了解和使用它。 会声会影全版本绿色安装包获取链接&#…

【简单理解化】 内存函数及它的模拟实现

本文章谈论memcpy,memcmp,memmove,memset函数 目录 1.memcpy的使用和模拟实现 2.memmove的使用和模拟实现 3.memset的使用 4.memcmp函数的使用 1.memcpy的使用和模拟实现 该函数用于从源内存块复制指定数量的字节到目标内存块 1 void * memcpy ( void * destination, const voi…

【机器学习基础】Python编程01:五个实用练习题的解析与总结

Python是一种广泛使用的高级编程语言,它在机器学习领域中的重要性主要体现在以下几个方面: 简洁易学:Python语法简洁清晰,易于学习,使得初学者能够快速上手机器学习项目。 丰富的库支持:Python拥有大量的机器学习库,如scikit-learn、TensorFlow、Keras和PyTorch等,这些…

ubuntu 18.04 arm install ravens error

GitHub - google-research/ravens: Train robotic agents to learn pick and place with deep learning for vision-based manipulation in PyBullet. Transporter Nets, CoRL 2020. 安装环境:xaiver ubuntu18.04 1、install python 2、install mimiconda,这里要…

Windows系统中配置 Redis 监听特定的 IP 地址

步骤 1:安装 Redis for Windows 从 Redis 官方网站 或 Microsoft Open Tech 下载适用于 Windows 的 Redis 版本。解压缩下载的压缩包到一个目录,比如 C:\Redis。打开命令提示符(以管理员身份运行),导航到 Redis 目录并启动 Redis 服务器:cd C:\Redis redis-server.exe步骤…