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的使用,见一个学一个就是了

相关推荐
BinaryBardC3 小时前
Bash语言的数据类型
开发语言·后端·golang
Pandaconda3 小时前
【Golang 面试题】每日 3 题(二十一)
开发语言·笔记·后端·面试·职场和发展·golang·go
_院长大人_4 小时前
使用 Spring Boot 实现钉钉消息发送消息
spring boot·后端·钉钉
土豆凌凌七4 小时前
GO随想:GO的并发等待
开发语言·后端·golang
AI向前看4 小时前
C语言的数据结构
开发语言·后端·golang
SomeB1oody4 小时前
【Rust自学】10.8. 生命周期 Pt.4:方法定义中的生命周期标注与静态生命周期
开发语言·后端·rust
自律小仔5 小时前
Go语言的 的继承(Inheritance)核心知识
开发语言·后端·golang
爱在心里无人知5 小时前
Go语言的 的数据封装(Data Encapsulation)核心知识
开发语言·后端·golang
悟道茶一杯5 小时前
Go语言的 的注解(Annotations)核心知识
开发语言·后端·golang
m0_748248776 小时前
十七:Spring Boot依赖 (2)-- spring-boot-starter-web 依赖详解
前端·spring boot·后端