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

相关推荐
qq_13948428828 分钟前
springboot433-基于SpringBoot的流浪猫爱心救助系统(源码+数据库+纯前后端分离+部署讲解等)
java·数据库·vue.js·spring boot·后端·maven·intellij-idea
寻月隐君18 分钟前
Python 数据结构与算法:课程笔记与实战解析
后端·python·github
云雨雪31 分钟前
朋友,你也不想不懂RPC的事情被同事发现吧?(附DEMO,快来玩!)
后端·微服务·rpc
梦兮林夕37 分钟前
深入浅出 Gin 路由管理:从基础到最佳实践
后端·go·gin
Seven971 小时前
【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
java·后端·设计模式
梦醒沉醉1 小时前
Scala的初步使用
开发语言·后端·scala
重庆穿山甲1 小时前
建造者模式实战指南:场景案例+实战代码,新手也能快速上手
后端
小安同学iter1 小时前
Spring(七)AOP-代理模式
java·后端·spring
Goboy2 小时前
老婆问我:“大模型的 Token 究竟是个啥?”
后端·程序员·架构
子洋2 小时前
Chroma+LangChain:让AI联网回答更精准
前端·人工智能·后端