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日

相关文章

  • java取两个字符串的最大交集

    Java取两个字符串的最大交集的算法可以通过动态规划(Dynamic Programming)来实现,其中最长公共子串(Longest Common Substring, LCS)就是该问题的一个特例。 以下是完整的攻略: 步骤1:定义状态 定义一个二维数组 dp[i][j],表示字符串 a 的前 i 个字符和字符串 b 的前 j 个字符的最长公共子串长度。…

    Java 2023年5月27日
    00
  • 如何实现Java监听器详解

    下面我将详细讲解“如何实现Java监听器详解”的完整攻略。 什么是Java监听器? 监听器是一种常用的设计模式,可以帮助我们在事件发生时进行相应的处理。在Java中,监听器就是一种回调函数,它可以在特定事件发生时被调用,用于执行相应的代码逻辑。 常用的Java监听器包括:ActionListener、MouseListener、KeyListener和Foc…

    Java 2023年5月18日
    00
  • 利用Java实体bean对象批量数据传输处理方案小结

    下面是详细讲解“利用Java实体bean对象批量数据传输处理方案小结”的完整攻略: 一、背景 在Java Web开发中,实体bean对象通常被用于封装表单数据、请求参数等信息,通过实体bean对象可以方便地进行数据传输和处理。在处理大量数据时,使用Java实体bean对象批量传输可以提高系统性能,缩短数据处理时间,同时也可以避免一些重复工作,提高开发效率。 …

    Java 2023年5月26日
    00
  • jsp使用cookie存储中文示例分享

    使用Cookie存储中文字符是Java Web开发常见的一个问题,本攻略主要介绍使用JSP存储中文字符到Cookie中的方法。具体操作如下: 1. 添加Cookie 使用JSP的Cookie类的setValue()函数,可以在Cookie中存储中文字符。示例代码如下: <% //新建一个中文Cookie Cookie cookie = new Cook…

    Java 2023年6月15日
    00
  • 解析JDK14中的java tools简介

    解析JDK14中的java tools简介 什么是java tools Java tools是JDK提供的开发工具,它包含了很多命令行工具,可以帮助开发者完成各种任务。 使用Java tools,我们可以进行以下操作: 编译和打包Java程序 运行Java程序 调试Java程序 分析Java程序的性能 生成Java文档等 Java tools的常用命令 ja…

    Java 2023年5月26日
    00
  • Maven导入依赖时爆红的几种解决方法

    当我们在Maven项目中导入依赖时,可能会遇到一些问题,例如依赖库的版本不兼容、缺少必需的依赖库等等,会导致IDE(例如Eclipse或IDEA)在pom.xml中将有关依赖项部分标记为红色。这时候需要我们采取一些方法进行解决。 解法一:更新或更改版本号 在Maven项目中,依赖项的版本是至关重要的。在遇到标记为红色的依赖项时,我们可以尝试通过更改或更新依赖…

    Java 2023年5月19日
    00
  • java实现图片验证码

    实现Java图片验证码的过程包括三个主要步骤:生成随机字符串、将字符串转化为图片、获取用户输入的验证码并进行验证。下面对这三个步骤分别进行详细的说明。 1. 生成随机字符串 我们可以使用Java的Random类生成指定长度的随机字符串。下面是一个生成6个字符长度的随机字符串的示例代码: Random random = new Random(); String…

    Java 2023年6月15日
    00
  • 基于javaMybatis存进时间戳的问题

    那我来详细讲解一下关于“基于Java Mybatis存进时间戳的问题”的攻略。 问题背景 在使用Java Mybatis框架进行MySQL数据库操作时,我们有时需要将时间信息存储为时间戳(长整型),然后进行操作。但在实际操作中,我们有可能遇到时间戳值存储不对的问题,导致数据不正确。 解决方案 方案1:使用注解方式进行时间戳的映射 在Mybatis的实体映射中…

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