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

相关推荐
Easonmax2 小时前
用 Rust 打造可复现的 ASCII 艺术渲染器:从像素到字符的完整工程实践
开发语言·后端·rust
百锦再2 小时前
选择Rust的理由:从内存管理到抛弃抽象
android·java·开发语言·后端·python·rust·go
小羊失眠啦.2 小时前
深入解析Rust的所有权系统:告别空指针和数据竞争
开发语言·后端·rust
q***71853 小时前
Spring Boot 集成 MyBatis 全面讲解
spring boot·后端·mybatis
大象席地抽烟3 小时前
使用 Ollama 本地模型与 Spring AI Alibaba
后端
程序员小假3 小时前
SQL 语句左连接右连接内连接如何使用,区别是什么?
java·后端
小坏讲微服务3 小时前
Spring Cloud Alibaba Gateway 集成 Redis 限流的完整配置
数据库·redis·分布式·后端·spring cloud·架构·gateway
方圆想当图灵4 小时前
Nacos 源码深度畅游:Nacos 配置同步详解(下)
分布式·后端·github
方圆想当图灵4 小时前
Nacos 源码深度畅游:Nacos 配置同步详解(上)
分布式·后端·github
小羊失眠啦.4 小时前
用 Rust 实现高性能并发下载器:从原理到实战
开发语言·后端·rust