java 基于springBoot上传文件/文件夹使用实例

news2025/7/18 5:48:00

最近项目中遇到一个文件批量上传的需求,对单个的文件、多文件或者文件夹的方式上传文件都可以满足要求,总结一下使用经验。
案例基于springBoot.
1、文件上传请求
这里postman测试了单文件和多文件的上传,同时测试了文件件方式上传。
postman中可以选择单文件或者Ctrl键选择多文件上传。如下图:
在这里插入图片描述
简单html实现文件夹方式的文件上传:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>文件上传</title>
</head>
<body>
    <h1>文件上传</h1>
    <form action="http://localhost:8888/hello" enctype="multipart/form-data" method="post">
        <input type="hidden" name="type" value="1"/>
        <input type="hidden" name="readFileType" value="jpg"/>
        <input id="dir" type="file" name="file" webkitdirectory mozdirectory/>
        <input id="uploadDir" type="submit" value="提交文件夹">
    </form>
</body>
</html>

2、编写配置类,由于springboot默认使用的是StardardMultipartFile这个类来处理文件,这里修改为CommonMultiPart

@Configuration
public class MultipartConfiguration {

    @Bean(name = "multipartResolver")
    public CommonsMultipartResolver getCommonsMultipartResolver() {
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setMaxUploadSize(524288000);
        multipartResolver.setMaxInMemorySize(524288000);
        return multipartResolver;
    }
}

并且在启动类上排除自动配置MultipartAutoConfiguration

@EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})

3、控制层

@Api(value = "数据接入", tags = "数据导入")
@RestController
@RequestMapping("/hello 这里写自己的请求")
public class OfflineDataController {
@ApiOperation(value = "数据批量上传")
    @AopLog(title = "数据批量上传")
    @RequestMapping(value = "uploadBatch", method = RequestMethod.POST)
    public Object uploadBatch(HelloVo helloVo) {
        ResultMap resultMap = offlineDataService.uploadBatch(helloVo);
        return resultMap;
    }
}

4、数据传输对象,其实就只要把file定义为一个集合就可以了,这样上传的所有文件都会封装到这里。

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("com.sjg.HelloVo")
public class HelloVo implements Serializable {

    @ApiModelProperty("导入多个文件")
    private List<MultipartFile> file;

    @ApiModelProperty("read文件类型")
    private String readFileType;

    @ApiModelProperty("数据相关性")
    private String relation;
}

5、服务层实现类
不需要对文件上传的绝对路径进行递归处理,直接就获取文件名称,使用上传等处理即可。干就完了!

@Service
public class OfflineDataServiceImpl implements OfflineDataService {
	@Override
    public ResultMap uploadBatch(HelloVo helloVo) {
		//获取所有文件
        List<MultipartFile> files = helloVo.getFile();
        //中间的其他处理过程
        for (MultipartFile file : files) {
                String name = "";
                //取得当前上传文件的文件名称
                name = file.getOriginalFilename();
                String fileName = name == null ? "" : name.split("\\.")[0];
                //校验上传文件后缀是否与所选择的文件类型相同
                String fileSuffix = name == null ? "" : name.split("\\.")[1];
        }
        //。。。其他处理并返回
        return ResultMap.ok("导入成功!");
	}
}

可能的问题:上传文件有大小限制,在application.yml中配置

spring: 
  servlet: 
    multipart: 
      # 设置单个文件的大小
      max-file-size: 100MB
      # 总上传文件大小
      max-request-size: 500MB

选择文件夹上传文件即可
在这里插入图片描述
不足之处,各位大佬评论指出,感谢!

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

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

相关文章

物联网开发笔记(48)- 使用Micropython开发ESP32开发板之控制OLED ssd1306屏幕

一、目的 这一节我们学习如何使用我们的ESP32开发板来控制OLED ssd1306屏幕&#xff0c;此处使用的是I2C协议&#xff0c;大家可自行百度学习一下I2C。 二、环境 ESP32 OLED ssd1306屏幕 Thonny IDE&#xff08;或者WOKWI在线仿真&#xff09; 几根杜邦线 本次使用在线仿真…

vue 项目在加载完成之前,显示预置加载动画

vue 项目在加载完成之前&#xff0c;显示预置加载动画 自己有一个日记项目&#xff0c;由于服务器带宽很小1MB&#xff0c;在加载之前页面中显示是空白的&#xff0c;就想给它加个前置的动画&#xff0c;这个用户体验更好。 一、实现 1. 定义项目入口 如果你是 pwa 应用&am…

[附源码]计算机毕业设计JAVA化妆品销售管理系统

[附源码]计算机毕业设计JAVA化妆品销售管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM myba…

SQL语句的约束 总结

目录 基本概念 主键约束 概念 操作 自增长约束 概念 操作 非空约束 概念 操作 唯一约束 概念 操作 默认约束 概念 操作 零填充约束 概念 约束总结 基本概念 主键约束 概念 主键约束相当于 唯一约束 非空约束 的组合&#xff0c;主键约束列不允许重复&am…

http网站升级为https网站,证书、http-flv视频显示处理

一、使用OpenSSL生成自签名证书 升级https网站需要自签名证书&#xff0c;证书在视频服务器Nginx中也需要&#xff0c;使用OpenSSL生成。 1.下载安装OpenSSL 2.以管理员身份运行cmd进入OpenSSL的安装目录查看安装版本 3.生成自签名证书。 生成私钥&#xff1a;openssl genr…

【 STM32Fxx串口问题-发送时间-发送字节拉长-每一位与下一位也拉长->>记录问题以及解决方式-复盘】

【 STM32Fxx串口问题-发送时间-发送字节拉长-每一位与下一位也拉长-&#xff1e;&#xff1e;记录问题以及解决方式】前言环境问题描述&#xff08;1&#xff09;测试uart5时&#xff1a;&#xff08;2&#xff09;测试uart1时&#xff1a;原因点解决方式细节点总结前言 在做项…

1388. 3n 块披萨

文章目录1. 背2. 题目3. 答案1. 背 首先&#xff0c;考虑没有环的情况。如果没有环这道题可以转变为和打家劫舍II一毛一样。但是明明这道题是三块披萨一拿啊&#xff0c;打家劫舍是相邻不能拿&#xff0c;还是不一样啊。 这块证明挺难的&#xff0c;但是我可以用个简单的例子…

MicroPython-On-ESP8266——8x8LED点阵模块(1)驱动原理

MicroPython-On-ESP8266——8x8LED点阵模块&#xff08;1&#xff09;驱动原理 1. 8x8LED点阵模块介绍 1.1. 显示模块的升级 之前已经试过点亮8段数码管&#xff0c;并能够使用两片HC595芯片来驱动数码管。今天我又找来了一个8x8点阵LED屏&#xff0c;下面分析一下这个屏幕并…

【用户画像】Redis的简介和安装

文章目录一 Redis简介1 应用场景&#xff08;1&#xff09;业务系统&#xff1a;配合关系型数据库做高速缓存&#xff08;2&#xff09;大数据场景&#xff1a;缓存数据&#xff08;3&#xff09;大数据场景&#xff1a;临时数据&#xff08;4&#xff09;大数据场景&#xff1…

【计算机毕业设计】医院管理系统源码

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 一&#xff0e;摘要 目前各医疗机构中&#xff0c;绝大部分中小型医疗机构内部没有实现任何信息化管理&#xff0c;医院临床信息&#xff0c;业务流程的数据依然采取纸质记录&#xff0c;造成数据容易丢失&#xff…

CCSP通过经验 | 讲义覆盖的知识点更全面(含题型分析)

我一直就职于国内网络安全乙方&#xff0c;自2014年接触云安全后&#xff0c;一直希望能获取一个比较官方的云安全从业水平的资格证书。 在横向比较了如腾讯云、华为云、阿里云以及国外如亚马逊云认证后&#xff0c;在没有明确就职意向的情况下&#xff0c;选择了ISC2的认证资…

如何用等价类划分法设计测试用例, 来测试程序的日期检查功能?

某学籍排查系统要求学生输入入学日期&#xff0c;日期限制在2008年9月至2012年7月&#xff0c;即系统只能对该段期间内的学籍进行处理&#xff0c;如日期不在此范围内&#xff0c;则显示输入错误信息。系统日期规定由年、月的6位数字 字符组成&#xff0c;前四位代表年&#xf…

多环境 运维

启动dev 同时包含 下面的 MVC DB 做配置时 如果 遇到相同参数 后加载的 覆盖前加载的 先加载 include 的 active 的是最后加载的 如果需要该 dev 需要该很多 include 换成 group 如果 active 是 dev 则加载dev组 如果 active 是pro 则加载pro组 在pom文件中 设置多环境 &l…

[UE][UE5]像素流送,像素流去掉黑边和按钮

[UE]这里写目录标题1.写在前面01.作者碎碎念02.结果演示截图视频教程2.需要准备的软件3.步骤01.准备一个打包好的项目02.启动服务器03.连接!去掉黑边和按钮结尾1.写在前面 01.作者碎碎念 2022.11.19初次更新 俺是不是很粗长&#xff01;老仔细了&#xff0c;全是截图&#xf…

目标检测算法——YOLOv5/YOLOv7改进|结合涨点Trick之ASFF_Detect(自适应空间特征融合)

>>>深度学习Tricks,第一时间送达<<< 🚀🚀🚀NEW!!!魔改YOLOv5/YOLOv7目标检测算法来啦 ~ 💡💡魔法搭配计算机视觉领域各类创新新颖且行之有效的网络结构,平均精度均值mAP涨点明显,实验效果也俱佳。有需要的小伙伴可以在CSDN后台留言+点赞收藏…

Linux环境搭配

Linux环境搭配 文章目录Linux环境搭配1.Linux背景介绍1.1 系统发展史1.2 开源与官方网址1.3 企业Linux应用现状1.4 Linux发行版本2.Linux环境搭配2.1 Linux环境搭配方式2.2 服务器购买2.3 云服务器配置3.Linux远程登陆3.1 Linux桌面3.2 远程登陆工具3.3 Xshell登陆服务器(单用户…

开放式无线运动耳机怎么挑选,适合在运动佩戴的几款耳机推荐

作为一个运动爱好者而言&#xff0c;耳机是可以堪称灵魂伴侣&#xff0c;好比如在健身房运动的时候可以一边戴着耳机&#xff0c;一边在跑步机上刷着剧&#xff0c;不仅能将两小时的需求量直接浓缩为一小时的使用量&#xff0c;想想都觉得自己赚到了&#xff0c;但是在耳机选购…

Windows11 Android开发相关记录(持续更新...)

Windows11 Android开发相关记录&#xff08;持续更新…&#xff09; 本章节主要记录安装好Windos系统后开发环境搭建及其心得。 以及开发常用软件和相关配置。 以下属于个人做法&#xff0c;仅供参考&#xff1a; 文章目录Windows11 Android开发相关记录&#xff08;持续更新…

【计算机网络】Tomcat和Servlet基础知识汇总

目录 1.Tomcat&#xff1a; 2.Servlet&#xff1a; 1.Tomcat&#xff1a; Tomcat是一个HTTP的服务器&#xff0c;本质上就是一个TCP服务器&#xff0c;只不过加上了一些按照HTTP协议格式进行解析/构造这样的代码。学习Tomcat的目的就是能够熟练掌握Tomcat api&#xff0c;基…

公司的这种打包启动方式,我简直惊呆了

前言 大家都知道&#xff0c;SpringBoot应用最终会打出一个Fat Jar, 里面包含了用到的全部依赖&#xff0c;启动也非常简单&#xff0c;java -jar xxx.jar即可。 但是我们公司打出的最终包&#xff0c;将依赖包挪到了外部&#xff0c;然后启动的时候通过loader.path指定依赖包…