当前位置: 首页 > news >正文

MultipartFile

文件的处理一般都是分为两步,第一步就是文件上传到指定文件夹,第二步是对文件进行处理。

这第一步的文件上传,后端就需要用到spring提供的接口MultipartFile 来进行处理,通过接口的方法transferTo(File dest)对文件进行上传。

MultipartFile 是 Spring 框架中用于处理文件上传的一个接口。它提供了多种方法来操作上传的文件,包括获取文件名、文件大小、文件内容类型、将文件保存到磁盘等。以下是对 MultipartFile 的详细介绍:

一、MultipartFile 的主要方法

方法名称返回类型描述
getOriginalFilename()String获取上传文件的原始文件名
getSize()long获取文件的大小(字节)
getContentType()String获取文件的内容类型(MIME类型)
getInputStream()InputStream获取文件的输入流,用于读取文件内容
transferTo(File dest)void将上传的文件保存到指定路径
  1. 获取文件

    String getOriginalFilename();
    • 返回上传文件的原始文件名。

    • 示例

      MultipartFile file = ...; // 获取上传的文件
      String fileName = file.getOriginalFilename();
      System.out.println("文件名:" + fileName);
  2. 获取文件大小

    long getSize();
    • 返回文件的大小,单位是字节。

    • 示例

      long fileSize = file.getSize();
      System.out.println("文件大小:" + fileSize + " 字节");
  3. 获取文件内容类

    String getContentType();
    • 返回文件的MIME类型,如image/jpegtext/plain等。

    • 示例

      String contentType = file.getContentType();
      System.out.println("文件类型:" + contentType);
  4. 获取文件的输入流

    InputStream getInputStream() throws IOException;
    • 返回文件的输入流,可以用于读取文件内容。

    • 示例

      InputStream inputStream = file.getInputStream();
      // 使用输入流读取文件内容
  5. 将文件保存到磁盘(最重要的方法)

    • 将上传的文件保存到指定的路径。

    • 示例

      File destFile = new File("D:/uploads/" + file.getOriginalFilename());
      file.transferTo(destFile);
      System.out.println("文件已保存到:" + destFile.getAbsolutePath());
  6. void transferTo(File dest) throws IOException, IllegalStateException;

二、使用 MultipartFile 处理文件上传

以下是一个完整的示例,展示如何在Spring Boot应用中使用 MultipartFile 处理文件上传。

1. 添加依赖

pom.xml 文件中添加 Spring Boot Web 依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
2. 创建文件上传的Controller
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;@RestController
@RequestMapping("/upload")
public class FileUploadController {@PostMapping("/single")public String uploadSingleFile(@RequestParam("file") MultipartFile file) {if (file.isEmpty()) {return "文件为空,请选择一个文件上传!";}// 获取文件名String fileName = file.getOriginalFilename();System.out.println("文件名:" + fileName);// 获取文件大小long fileSize = file.getSize();System.out.println("文件大小:" + fileSize + " 字节");// 获取文件类型String contentType = file.getContentType();System.out.println("文件类型:" + contentType);// 保存文件到磁盘try {File destFile = new File("D:/uploads/" + fileName);file.transferTo(destFile);return "文件已成功上传到:" + destFile.getAbsolutePath();} catch (IOException | IllegalStateException e) {e.printStackTrace();return "文件上传失败:" + e.getMessage();}}
}
3. 配置文件上传的路径

application.properties 文件中配置文件上传的路径:

# 设置文件上传的临时存储路径
spring.servlet.multipart.location=D:/uploads
4. 测试文件上传
  • 启动Spring Boot应用。

  • 使用Postman或其他工具发送一个POST请求到http://localhost:8080/upload/single,在请求体中添加一个名为file的文件字段。

  • 选择一个文件上传,查看控制台输出和文件是否成功保存到指定路径。

三、注意事项

  1. 文件大小限制

    • 默认情况下,Spring Boot 对上传的文件大小有限制(通常是1MB)。如果需要上传较大的文件,需要在 application.properties 文件中配置文件大小限制

      # 设置最大文件大小(例如10MB)
      spring.servlet.multipart.max-file-size=10MB
      # 设置最大请求大小(例如20MB)
      spring.servlet.multipart.max-request-size=20MB
  2. 文件存储路径

    • 确保指定的文件存储路径存在,否则可能会抛出异常。如果路径不存在,可以在代码中创建路径

      File uploadDir = new File("D:/uploads");
      if (!uploadDir.exists()) {uploadDir.mkdirs();
      }
  3. 异常处理

    • 在处理文件上传时,可能会遇到各种异常,如文件为空、文件大小超出限制等。建议在代码中进行适当的异常处理,返回友好的错误信息。

MultipartFile 是Spring框架中处理文件上传的强大工具,它简化了文件上传的流程,使得开发者可以更方便地处理上传的文件。


文章转载自:

http://r4SnmC3I.pLqqn.cn
http://L6wUif58.pLqqn.cn
http://lVGUvos5.pLqqn.cn
http://Da5vRuyL.pLqqn.cn
http://KIMujpyh.pLqqn.cn
http://3VNnY5y1.pLqqn.cn
http://woRB4reY.pLqqn.cn
http://fuXRYcrO.pLqqn.cn
http://io4GLw8L.pLqqn.cn
http://ey6PDBnU.pLqqn.cn
http://1t2YNTVs.pLqqn.cn
http://hxKgaRth.pLqqn.cn
http://wxHpfYMK.pLqqn.cn
http://OvBqqhxk.pLqqn.cn
http://gavmkJaI.pLqqn.cn
http://q62TX9TO.pLqqn.cn
http://kHUJTQoF.pLqqn.cn
http://Xb7NVU8g.pLqqn.cn
http://7ymphxmZ.pLqqn.cn
http://uhxjly3Q.pLqqn.cn
http://vCtq8Hlk.pLqqn.cn
http://wMS6chbJ.pLqqn.cn
http://M4t13Ebn.pLqqn.cn
http://Mh9bRolN.pLqqn.cn
http://vNVauuls.pLqqn.cn
http://azfN0TZh.pLqqn.cn
http://YuTpBf6c.pLqqn.cn
http://UOLvWlJb.pLqqn.cn
http://n70DDkg5.pLqqn.cn
http://FB8DoQqx.pLqqn.cn
http://www.dtcms.com/a/236009.html

相关文章:

  • 【Linux】ls 命令详解及使用示例:列出目录中的内容
  • 向量压缩方法全解析:从线性插值到小波压缩
  • spring重试机制
  • [IMX][UBoot] 01.UBoot 常用命令
  • MPO接口型光模块的失效检测
  • 进一步探究synchronized
  • 智能生成完整 Java 后端架构,告别手动编写 ControllerServiceDao
  • Langgraph实战--在Agent中加入人工反馈
  • 区分viewmodel和model职责的方法
  • C++-std::async与std::future基本使用
  • 使用 CMake 管理库版本号(VERSION 和 SOVERSION)
  • Canal详解
  • 使用 XState 状态机打造英语单词学习界面(demo)
  • 对象存储Ozone EC应用和优化
  • 多电流传感器电流检测方法多电流传感器电流检测方法
  • 图片转Latex软件
  • HarmonyOS运动语音开发:如何让运动开始时的语音播报更温暖
  • 中断相关知识
  • C语言的全称:(25/6/6)
  • python模块——tqdm
  • An improved YOLACT algorithm for instance segmentation of stacking parts
  • 双面沉金PCB应用:打造卓越电子设备的黄金工艺
  • 深入浅出:计算机网络体系结构——信息世界的“交通规则”
  • C语言速成15之告别变量碎片化:C 语言结构体如何让数据管理从混乱走向有序
  • MCP协议三种传输机制全解析
  • 在线OJ项目测试
  • C++.OpenGL (7/64)摄像机(Camera)
  • 云服务器厂商机房是什么
  • 玛哈特辊式矫平机:塑造金属平整的精密力量
  • U-Mail邮件加密,保障邮件系统信息安全