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

相关推荐
北斗落凡尘1 天前
LangGraph 入门实战(11)--输出模式
后端·python·langchain
demo007x1 天前
Hermes-Agent 技术架构
前端·后端·agent
__zRainy__1 天前
Node系列 · Node基础:net 模块
后端·node.js
Diligently_1 天前
Anolis 系统更新与密码设置&磁盘扩容
java·后端·spring
kyson_1 天前
大文件切片上传:从“能传”到“可靠”的 Vue 3 + Java 全栈实现
后端
张龙6871 天前
uv 全面指南:比 pip 快 100 倍的 Python 包管理器,从安装到团队落地
后端·python
用户40966601317511 天前
Guava 不止有 Lists 和 Maps:Cache、EventBus、Multimap 实战
java·后端
一只叫煤球的猫1 天前
从 Java 21 到 Java 25:ThreadLocal 以外的选择—— ScopedValue
java·后端·架构