Spring Boot简单实现文件上传功能

下面是关于“Spring Boot简单实现文件上传功能”的完整攻略。

准备工作

  1. 需要在pom.xml中添加如下依赖:

xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>

  1. 在application.properties中添加如下配置:

properties
# 上传文件大小限制
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
# 临时文件路径
#spring.servlet.multipart.location=/tmp

实现代码

  1. 首先在Controller中添加如下代码,来实现文件上传功能:

```java
@RestController
@RequestMapping("/file")
public class FileController {

   @PostMapping("/upload")
   public String upload(@RequestParam("file") MultipartFile file) throws IOException {
       if (!file.isEmpty()) {
           // 获取文件名
           String fileName = file.getOriginalFilename();
           // 获取文件后缀
           String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
           // 判断上传文件类型是否为指定类型
           if (!"jpg".equals(suffix) && !"png".equals(suffix) && !"jpeg".equals(suffix)) {
               return "上传失败,文件类型不合法!";
           }
           // 获取文件保存路径
           String filePath = System.getProperty("user.dir") + "/src/main/resources/static/image/";
           File dest = new File(filePath + fileName);
           // 判断文件父目录是否存在
           if (!dest.getParentFile().exists()) {
               dest.getParentFile().mkdirs();
           }
           try {
               // 保存文件
               file.transferTo(dest);
               System.out.println("上传成功");
               return "上传成功";
           } catch (IOException e) {
               e.printStackTrace();
               return "上传失败";
           }
       } else {
           return "上传失败,文件为空!";
       }
   }

}
```

  1. 为了更加友好的提示信息,可以在前端添加如下代码:

```html

```

然后在Controller中添加如下代码:

```java
@GetMapping("/uploadPage")
public String uploadPage() {
return "upload";
}

@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file, Model model) throws IOException {
if (!file.isEmpty()) {
// 获取文件名
String fileName = file.getOriginalFilename();
// 获取文件后缀
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
// 判断上传文件类型是否为指定类型
if (!"jpg".equals(suffix) && !"png".equals(suffix) && !"jpeg".equals(suffix)) {
model.addAttribute("message", "上传失败,文件类型不合法!");
return "upload";
}
// 获取文件保存路径
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/image/";
File dest = new File(filePath + fileName);
// 判断文件父目录是否存在
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
try {
// 保存文件
file.transferTo(dest);
System.out.println("上传成功");
model.addAttribute("message", "上传成功!");
return "upload";
} catch (IOException e) {
e.printStackTrace();
model.addAttribute("message", "上传失败!");
return "upload";
}
} else {
model.addAttribute("message", "上传失败,文件为空!");
return "upload";
}
}
```

示例说明

示例1:上传所需文件

上传所需文件的示例代码如下:

<form action="/file/upload" method="post" enctype="multipart/form-data">
    <table>
        <tr>
            <td><input type="file" name="file"></td>
        </tr>
        <tr>
            <td><button type="submit">上传文件</button></td>
        </tr>
    </table>
</form>

<p th:text="${message}"></p>

其中,action属性指向了上传文件的接口,enctype属性设置了form表单的编码类型为multipart/form-data

示例2:判断文件类型

在上传文件的Controller中,添加了如下判断文件类型的代码:

// 获取文件后缀
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
// 判断上传文件类型是否为指定类型
if (!"jpg".equals(suffix) && !"png".equals(suffix) && !"jpeg".equals(suffix)) {
    model.addAttribute("message", "上传失败,文件类型不合法!");
    return "upload";
}

其中,suffix变量表示获取上传文件的后缀名,判断上传文件类型是否为指定类型(此处只允许上传.jpg、.png、.jpeg类型的文件)。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot简单实现文件上传功能 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月16日

相关文章

  • java 内部类(匿名类,匿名对象,静态内部类)详解及实例

    Java内部类(匿名类,匿名对象,静态内部类)详解及实例 Java内部类是一个嵌套在其他类中的类,内部类可以访问外部类的所有成员(包括私有成员),并且可以用来实现一些特殊的功能。Java内部类通常分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。 成员内部类 成员内部类是定义在外部类的内部,并且不是 static 的内部类。成员内部类可以访问外部…

    Java 2023年5月26日
    00
  • Android自定义抛出异常的方法详解

    Android自定义抛出异常的方法详解 在Android开发中,我们经常会需要使用异常来处理一些错误情况,但是Java提供的异常类已经无法满足我们的需求,这时候我们就需要自定义异常来处理异常情况。本文介绍了如何定义自己的异常类以及如何使用它。 自定义异常类 自定义异常类通常需要继承Exception或RuntimeException类。如果你的异常会使程序无…

    Java 2023年5月27日
    00
  • Java Map所有的值转为String类型

    要将Java Map中所有的值转换为String类型,可以使用以下步骤: 遍历Map中所有的值; 对于每个值,使用toString()方法将其转换为字符串类型; 将转换后的字符串替换原来的值。 具体代码如下: for (Map.Entry<String, Object> entry : map.entrySet()) { Object value…

    Java 2023年6月3日
    00
  • SSH框架网上商城项目第1战之整合Struts2、Hibernate4.3和Spring4.2

    我们来讲解一下“SSH框架网上商城项目第1战之整合Struts2、Hibernate4.3和Spring4.2”的完整攻略。 简介 SSH框架是指Struts2、Hibernate、Spring这三个开源框架的组合,是经典的Java Web框架。整合这三个框架可以让项目的开发更高效、更具可维护性。 本文将讲解如何将这三个框架整合在网上商城项目中。 整合步骤 …

    Java 2023年5月19日
    00
  • Android的EditText字数检测和限制解决办法

    请您参考以下攻略: Android EditText字数检测和限制解决办法 1. 使用TextWatcher方式实时检测字数并限制 TextWatcher是TextView的一个监听器接口,用于监听EditText文本的变化并进行自定义操作,例如自动填充、实时检测字数等。 以下是一个实现监听EditText字数并限制的示例代码: EditText editT…

    Java 2023年5月20日
    00
  • Java环境中MyBatis与Spring或Spring MVC框架的集成方法

    下面是关于“Java环境中MyBatis与Spring或Spring MVC框架的集成方法”的完整攻略,包含两个示例说明。 Java环境中MyBatis与Spring或Spring MVC框架的集成方法 在Java环境中,MyBatis与Spring或Spring MVC框架的集成非常常见。在本文中,我们将介绍如何将MyBatis与Spring或Spring…

    Java 2023年5月17日
    00
  • springboot入门之profile设置方式

    下面我来详细讲解“springboot入门之profile设置方式”的完整攻略。 一、什么是profile 在Spring Boot项目中,profile是一种方便在不同环境中运行应用程序的方式。可以通过定义不同的配置文件来区分不同的环境,比如开发环境、测试环境、生产环境等等。 二、profile的配置方式 Spring Boot提供了多种配置profile…

    Java 2023年5月19日
    00
  • Spring Security基本架构与初始化操作流程详解

    Spring Security基本架构与初始化操作流程详解 什么是Spring Security Spring Security是一个基于Spring框架的安全解决方案,主要解决应用程序的认证和授权问题。它提供了一整套安全服务,并可在Web请求级和方法调用级处理身份验证和授权。 Spring Security基本架构 Spring Security的基本架构…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部