Java中MultipartFile类

今天看公司项目,有用到这个类,正好自己不理解,来记录学习一下

先看概念🙌

官方概念:在Java中,MultipartFile 类是Spring框架提供的一个接口,用于处理上传的文件。这个接口主要用于Web应用程序,允许用户通过表单上传文件到服务器。MultipartFile 提供了读取上传文件内容、获取文件名、文件类型等信息的方法。

说人话😁:就是Spring Web MVC 的依赖下的一种处理上传文件的类

学点API😊

  • getInputStream(): 返回一个 InputStream 对象,可以用来读取文件内容。
  • getOutputStream(): 返回一个 OutputStream 对象,可以用来写入文件内容,但通常不用于上传文件。
  • getSize(): 返回文件的大小,以字节为单位。
  • isEmpty(): 检查文件是否为空(即是否没有上传文件)。

先对这些有印象吧,以后在实践中学习😁

直接实践😎

导入依赖

xml 复制代码
 <dependencies>
     <!-- Spring Web MVC -->
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
     <!-- 如果需要,添加其他 Spring Boot Starter 依赖 -->
 </dependencies>

添加依赖后,你还可以在 Spring Boot 应用中启用文件上传的配置。不过Spring Boot 是默认支持文件上传的,

但是如果你需要自定义文件上传的配置,比如设置文件的最大大小,你可以在 application.propertiesapplication.yml 文件中进行配置,例如在 application.properties 文件中:

ini 复制代码
 # 设置文件上传的最大大小为10MB
 spring.servlet.multipart.max-file-size=10MB
 # 设置总请求大小的最大值
 spring.servlet.multipart.max-request-size=10MB

简单Demo

下面是使用 MultipartFile 的一个简单例子:

kotlin 复制代码
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
 import org.springframework.web.multipart.commons.CommonsMultipartResolver;
 ​
 @RestController
 public class FileUploadController {
 ​
     @PostMapping("/upload")
     public String handleFileUpload(@RequestParam("file") MultipartFile file) {
         if (!file.isEmpty()) {
             try {
                 // 获取文件名
                 String filename = file.getOriginalFilename();
                 // 获取文件的MIME类型
                 String contentType = file.getContentType();
                 // 获取文件大小
                 long fileSize = file.getSize();
                 // 保存文件
                 file.transferTo(new File("path/to/your/upload/directory/" + filename));
                 return "File uploaded successfully. Filename: " + filename + ", Size: " + fileSize + " bytes";
             } catch (IOException e) {
                 e.printStackTrace();
                 return "File upload failed.";
             }
         } else {
             return "No file was uploaded.";
         }
     }
 }

别急🙌,慢慢分析一下这段代码: 首先它的入参是MultipartFile类型的,表明接收一个文件类,然后通过几种常见的Api获取了它的文件名、MIME类型,然后使用transferTo方法将文件保存起来

没了,跟简单

工程实践

正好看一下公司是怎么使用的:

看代码:

ini 复制代码
 inputStream = params.getFile().getInputStream();
 //获取excel表格
 List<HashMap<String, List<String>>> excelValueMapList = easyExcelService.getExcelValueMap(inputStream);

公司是获取这个文件的流,然后通过公司的工具类将其转换为对应的表格类型,进行下一步的处理

结束!💕💕💕

总的来说,这种Api的使用,见一个学一个就是了

相关推荐
CircleMouse3 分钟前
基于 RedisTemplate 的分页缓存设计
java·开发语言·后端·spring·缓存
獨枭1 小时前
使用 163 邮箱实现 Spring Boot 邮箱验证码登录
java·spring boot·后端
维基框架1 小时前
Spring Boot 封装 MinIO 工具
java·spring boot·后端
秋野酱1 小时前
基于javaweb的SpringBoot酒店管理系统设计与实现(源码+文档+部署讲解)
java·spring boot·后端
☞无能盖世♛逞何英雄☜2 小时前
Flask框架搭建
后端·python·flask
进击的雷神2 小时前
Perl语言深度考查:从文本处理到正则表达式的全面掌握
开发语言·后端·scala
进击的雷神2 小时前
Perl测试起步:从零到精通的完整指南
开发语言·后端·scala
豌豆花下猫3 小时前
Python 潮流周刊#102:微软裁员 Faster CPython 团队(摘要)
后端·python·ai
秋野酱3 小时前
基于javaweb的SpringBoot驾校预约学习系统设计与实现(源码+文档+部署讲解)
spring boot·后端·学习
北辰浮光3 小时前
[springboot]SSM日期数据转换易见问题
java·spring boot·后端