第十七节:学习Hutool上传文件(自学Spring boot 3.x的第四天)

news2024/11/24 14:08:36

这节记录下如何使用Hutool库上传本地的文件到服务器端(因为是练习,所以是本地端)。

第一步:引入Hutool库最新版本,通过maven方式。(最新版本需去maven仓库查询)

第二步:编写一个postmapping方式的upload方法

@RestController
public class UploadController {
    @Value("${upload.path}")
    private String uploadPath;

    @PostMapping("/upload")
    public Result upload(MultipartFile file) throws IOException {
        //获取文件名称
       String fileName =  file.getOriginalFilename();
       //获取文件的后缀
        String suffix = FileUtil.getSuffix(fileName);
        //对文件名做重命名操作
        //年/月/日/当前时间/时间戳-uuid.jpg
        //文件子路径
        String url = ObjectUtil.generateFileByTime()+ObjectUtil.generateFileBySecond()+"-"+ObjectUtil.generateUUID()+ StrUtil.DOT+suffix;
        //文件真实路径
        String filePath = uploadPath+url;
        InputStream inputStream = file.getInputStream();
        FileUtil.writeFromStream(inputStream,filePath);
       return Result.success(url);
    }
}

编写一个ObjectUtil的工具栏。

public class ObjectUtil {
    /**
     * 对年月日进行格式化
     * @return
     */
    public  static String generateFileByTime(){
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        return dateFormat.format(new Date()).replaceAll("-","/")+"/";
    }

    /**
     * 对时分秒进行格式化
     * @return
     */
    public  static String generateFileBySecond(){
        DateFormat dateFormat = new SimpleDateFormat("HH-mm-ss");
        return  dateFormat.format(new Date()).replaceAll("-","");
    }

    /**
     * 生成UUID并格式化
     * @return
     */
    public static String generateUUID(){
        return UUID.randomUUID().toString().replaceAll("-","");
    }

}

第三步:测试

第四步:开放该目录供外界访问

这里涉及到上节提到的自定义资源。在配置类中加上该文件的访问前缀和资源位置。

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

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

相关文章

Django路由访问及查询数据

1、在应用模块下,创建urls文件,用来存放访问路由 2、在项目总访问url里面注册路由 3、在view文件里,定义方法参数 from django.core import serializers from django.db import connection from django.http import HttpResponse, JsonRespo…

【佳学基因检测】在织梦网站中, 创建或修改目录:/var/www/html/cp 失败! DedeTag Engine Create File False

【佳学基因检测】在织梦网站中, 创建或修改目录:/var/www/html/cp 失败! DedeTag Engine Create File False 在使用 DedeCMS(一个常用的内容管理系统)时,如果遇到“创建或修改目录:/var/www/html/cp 失败&…

背靠大众,「半价Model 3」卖爆,小鹏走出低谷

‍作者 |老缅 编辑 |德新 各路消息都在显示,小鹏MONA M03爆单了。 总裁王凤英在庆功宴上喝下了人生第一杯酒。 小鹏MONA产品线负责人透露,上市后的两天内,MONA全国的试驾车累计开了超过10万公里。 在上市后的48小时内,M03获得…

华为OD机试 - 周末爬山 - 广度优先搜索BFS(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

Mysql基础——DML

数据操作语言(DML,Data Manipulation Language) DML语句用于对数据库中的数据进行操作(增删改查数据),主要包括: INSERT:向表中插入数据,例如 INSERT INTO table_name …

超简单,3步训练Flux Lora模型,附整合包!

超简单,3步训练Flux Lora模型,附整合包! 🎉 12G显存也能炼Flux Lora模型?!3步速成,小白也能轻松上手! 兄弟们!AI绘画领域又迎来了一波革命!Flux Lora模型训练…

2024中国500强企业高峰论坛安然大健康分论坛圆满举办!

一场巅峰聚首的风云际会,一次引领未来的行业盛宴。 9月10日至11日,由中国企业联合会、中国企业家协会主办的2024中国500强企业高峰论坛在天津举行,本届高峰论坛以“向‘新’而行、打造更多世界一流企业”为主题,汇集业内知名企业…

利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(三)

简介 随着生成式人工智能的兴起,传统的 BI 报表功能已经无法满足用户对于自动化和智能化的需求,今天我们将介绍亚马逊云科技平台上的AI驱动数据可视化神器 – Quicksight,利用生成式AI的能力来加速业务决策,从而提高业务生产力。…

【Qt应用】Qt编写简易登录注册界面

目录 引言 一、准备工作 二、设计思路 2.1 登录 2.2 注册 三、登录功能 3.1 创建账号与密码输入框 3.2 设置密码输入框格式 3.2.1 初始 3.2.2 创建一个显示隐藏按钮 3.2.3 信号与槽函数 3.3 创建登录按钮 3.4 创建可选功能 四、注册功能 4.1 账号和密码输入…

【Go】深入探索Go语言中运算符

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

路基边坡自动化监测解决方案

物联网云平台 平台登录--用户登录 输入网址:http://yun.sj2000.org.cn,进入系统登录界面,输入用户名及密码后进入系统平台。 设备详情--设备概览 登录系统平台后,用户可在界面左侧看到系统项目栏和子项目选项,登陆的…

【Python爬虫系列】_018.多线程与多进程

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数…

3. 进阶指南:自定义 Prompt 提升大模型解题能力

怎么判断 Prompt 的好坏,有什么问题有着标准答案么? 答:让大模型求解数学问题。 李宏毅老师的 HW4 正好提到了有关数学问题的 Prompt,所以我决定中间插一篇这样的文章。通过本文你将: 了解各种 Prompt 如何影响大型语言…

基于asp.net电子邮件系统设计与实现

1 引言 1.1 电子邮件介绍 电子邮件(简称E-mai1)又称电子信箱、电子邮政,它是—种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是—个简易、快速的方法。通过连接全…

个人用户如何有效利用固态硬盘数据恢复工具

固态硬盘相较于机械硬盘来说更为小巧,所以很多人选择使用固态硬盘来进行数据的存储。这些存储设备都可能会遇到一些意外导致的数据丢失情况。好在现在的科技比较发达,这次我们来聊一聊有哪些固态硬盘数据恢复工具可以解决这个问题吧。 1.福晰数据恢复 …

Sentinel 高级

一、请求限流 1.介绍 处理并发量大时资源耗尽问题 Sentinel的请求限流功能主要体现在对QPS(每秒查询率)和线程数的控制上。当某个API接口或服务的请求量达到设定的QPS阈值时,Sentinel会触发限流规则,对这些超出阈值的请求进行限…

Selenium自动化测试面试题合集!

1、什么是自动化测试、自动化测试的优势是什么? 通过工具或脚本代替手工测试执行过程的测试都叫自动化测试。 自动化测试的优势: 1、减少回归测试成本 2、减少兼容性测试成本 3、提高测试反馈速度 4、提高测试覆盖率 5、让测试工程师做更有意义的…

官宣:Zilliz 在亚马逊云科技中国区正式开服!

01 Zilliz Cloud 正式上线亚马逊云科技宁夏区服务 9 月 4 日,Zilliz 正式官宣, Zilliz Cloud 正式上线亚马逊云科技在宁夏区的云服务。至此,Zilliz Cloud 已实现全球 5 大云 19 个节点 的全覆盖,成为全球首个提供海内外多云服务的…

读构建可扩展分布式系统:方法与实践01可扩展系统简介

1. 简介 1.1. 在过去20年里,软件系统的规模、复杂性和容量都出现了前所未有的增长 1.2. 代码是容器、数据库、消息传递系统和其他组件的一部分,通过调用API和构建指令,构成你的应用程序 1.3. 可扩展(scalable)是软件工程中用来描述软件系统…

WinCC Professional 变量的线性转换

把PLC中的变量进行线性转换的显示到WinCC Profession画面上,操作步骤如下: 1.在PLC的DB块中创建三个变量,如下所示: 2.在WinCC RT PRO的变量表中也同样创建三个变量,如下所示: 3.对WinCC RT PRO变量表中的…