Spring Boot实现图片上传功能

下面是关于“SpringBoot实现图片上传功能”的完整攻略:

1. 添加依赖

首先需要在 pom.xml 文件中添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- 添加文件上传依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

2. 编写 Controller

编写 Controller,实现文件上传的功能。这里我们将允许用户上传一张图片文件,并将其保存在项目根目录下的 uploads 目录中:

@RestController
public class FileUploadController {

    @Value("${file.upload.path}")
    private String uploadDir;

    // 跳转到文件上传页面
    @GetMapping("/upload")
    public String toUploadPage() {
        return "file-upload";
    }

    // 实现文件上传功能
    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file, Model model) {
        String fileName = file.getOriginalFilename();
        File dest = new File(uploadDir + fileName);

        try {
            file.transferTo(dest);
            model.addAttribute("msg", "文件上传成功!");
        } catch (IOException e) {
            e.printStackTrace();
            model.addAttribute("msg", "文件上传失败:" + e.getMessage());
        }

        return "file-upload";
    }
}

3. 配置上传文件保存的目录

application.properties 文件中配置上传文件保存的目录:

file.upload.path=/uploads/

4. 实现文件上传页面

最后,我们需要实现一个文件上传的页面,让用户能够方便地上传图片。具体实现如下:

<!DOCTYPE html>
<html>
<head>
    <title>文件上传</title>
</head>

<body>
    <h2>文件上传</h2>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file"><br><br>
        <input type="submit" value="上传">
    </form>
    <p th:text="${msg}"></p>
</body>
</html>

示例1:上传单个文件

下面是一个简单的上传单个文件的示例:

  1. 启动 SpringBoot 项目;
  2. 访问 http://localhost:8080/upload,跳转到文件上传页面;
  3. 选择一张图片文件,并点击“上传”按钮;
  4. 如果上传成功,页面上会显示“文件上传成功!”的提示信息;
  5. 查看项目根目录下的 uploads 目录,如果上传的图片文件已经出现在该目录中,说明文件上传成功。

示例2:上传多个文件

上传多个文件的过程跟上传单个文件差不多,只是在 HTML 文件中修改了文件上传的 input 属性,使其允许上传多个文件。具体实现如下:

<!DOCTYPE html>
<html>
<head>
    <title>文件上传</title>
</head>

<body>
    <h2>文件上传</h2>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file" multiple><br><br>
        <input type="submit" value="上传">
    </form>
    <p th:text="${msg}"></p>
</body>
</html>

完成多个文件上传的流程跟上传单个文件的流程类似。注意,在 Controller 中需要将文件处理的逻辑修改为循环处理多个文件。

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

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

相关文章

  • Spring Data Jpa 中原生查询 REGEXP 的使用详解

    Spring Data JPA 中原生查询 REGEXP 的使用详解 在使用 Spring Data JPA 进行数据持久化时,有时需要使用原生 SQL 进行查询,而在查询过程中常常需要使用正则表达式来匹配数据。Spring Data JPA 提供了对正则表达式的支持,本文将详细讲解如何在 Spring Data JPA 中使用原生查询 REGEXP。 正则…

    Java 2023年5月20日
    00
  • Java网络编程教程之设置请求超时的方法

    下面我会详细讲解Java网络编程中如何设置请求超时的方法,包括以下几个步骤: 1.建立URLConnection连接对象 Java中处理网络请求的核心类是URLConnection,可以通过它来建立HTTP等网络请求连接。我们可以使用如下代码建立一个URLConnection连接: URLConnection connection = new URL(url…

    Java 2023年5月20日
    00
  • Java的Hello World详解

    Java的Hello World详解 简介 Hello World是学习任何编程语言的第一步,也是最基本的程序代码。在Java语言中,Hello World程序是Java学习者入门的必修课程。 安装Java环境 在开始编写Java程序之前,需要先安装Java编程环境。可以从Oracle官网下载并安装JDK(Java Development Kit)。安装过程…

    Java 2023年5月20日
    00
  • 详解Spring Boot 部署与服务配置

    详解SpringBoot部署与服务配置 Spring Boot是一个基于Spring框架的快速开发应用程序的工具。在本文中,我们将详细讲解如何部署和配置Spring Boot应用程序。 部署Spring Boot应用程序 Spring Boot应用程序可以部署在各种环境中,包括本地开发环境、云环境和自托管服务器等。以下是一些常见的部署选项: 本地开发环境 在…

    Java 2023年5月15日
    00
  • java高效打印一个二维数组的实例(不用递归,不用两个for循环)

    首先,需要说明的是,题目本身有些矛盾。要高效地打印二维数组,通常需要使用循环,而对于这道题目,又要求不使用两个for循环,因此实现起来会比较有一定的难度。 下面是几种不同的实现方式。 方法一:使用Arrays.deepToString()方法 Arrays类中提供了一个非常方便的方法deepToString(),可以直接把一个多维数组转化为字符串形式,非常方…

    Java 2023年5月26日
    00
  • Spring学习之Bean的装配多种方法

    Spring学习之Bean的装配多种方法 Spring中的Bean是应用程序的基本构建块之一,而Bean装配指的是将各个Bean组合在一起以创建一个完整的应用程序。在Spring中,有多种方法可以对Bean进行装配。 1. 自动装配 自动装配是Spring中最简单、最便利的装配方式之一。Spring会自动地为一些Bean属性寻找合适的值,并将它们注入到Bea…

    Java 2023年5月31日
    00
  • JS定时刷新页面及跳转页面的方法

    下面是JS定时刷新页面及跳转页面的方法攻略。 定时刷新页面 使用setInterval() 在JS中使用setInterval()函数可以实现定时刷新页面的效果。setInterval()函数有两个参数,第一个参数是要执行的函数,第二个参数是执行该函数的间隔时间,单位是毫秒。 下面是一个示例代码: setInterval(function(){ locati…

    Java 2023年6月15日
    00
  • java字符串与格式化输出的深入分析

    Java字符串与格式化输出的深入分析 Java是一种面向对象、操作简便、具备强大功能的编程语言。字符串在Java中有着十分重要的地位。本攻略将深入分析Java中字符串和格式化输出的特性和用法。 Java字符串 什么是字符串 字符串是指一串由字符组成的数据类型。Java中的字符串类型是String。字符串对象一旦创建就不能再被修改,因此称它是不可变的。 字符串…

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