Spring Boot项目中实现文件上传功能的示例

下面是Spring Boot项目中实现文件上传功能的完整攻略。

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-thymeleaf</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2. 配置上传文件的路径

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

# 文件上传路径
file.upload-dir=/tmp/upload-dir/

3. 编写控制器

@RestController
public class FileUploadController {

    @Autowired
    private FileUploadService fileUploadService;

    @PostMapping("/upload")
    public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
        try {
            fileUploadService.uploadFile(file);
        } catch (IOException e) {
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
        }
        return ResponseEntity.ok("File uploaded successfully");
    }
}

4. 编写Service

@Service
public class FileUploadService {

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

    public void uploadFile(MultipartFile file) throws IOException {
        Path uploadPath = Paths.get(uploadDir);
        if (!Files.exists(uploadPath)) {
            Files.createDirectories(uploadPath);
        }
        Files.copy(file.getInputStream(), uploadPath.resolve(file.getOriginalFilename()), StandardCopyOption.REPLACE_EXISTING);
    }
}

在Service中读取application.properties中上传文件的目标路径,并使用Files.copy()方法将上传文件复制到对应目录中。

5. 编写HTML页面

<!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>File Upload Example</title>
</head>
<body>
    <form method="post" action="/upload" enctype="multipart/form-data">
        <input type="file" name="file" id="file" />
        <button type="submit">Upload</button>
    </form>
</body>
</html>

示例1:上传单个文件

在HTML页面上添加一个表单,用户可以通过该表单提交文件上传请求。在控制器中使用@RequestParam注解,获取客户端传输过来的MultipartFile类型的文件。

示例2:上传多个文件

在HTML页面上添加如下代码,可以上传多个文件:

<!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>File Upload Example</title>
</head>
<body>
    <form method="post" action="/upload" enctype="multipart/form-data">
        <input type="file" name="file" id="file" multiple />
        <button type="submit">Upload</button>
    </form>
</body>
</html>

控制器修改如下:

@PostMapping("/upload")
public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile[] files) {
    try {
        for (MultipartFile file : files) {
            fileUploadService.uploadFile(file);
        }
    } catch (IOException e) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
    }
    return ResponseEntity.ok("Files uploaded successfully");
}

可以通过使用@RequestParam注解,将MultipartFile数组作为参数来简单地实现上传多个文件的功能。

以上就是Spring Boot实现文件上传功能的完整攻略,希望可以帮助到你。

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

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

相关文章

  • python项目运行导致内存越来越大的原因详析

    针对“python项目运行导致内存越来越大的原因详析”这个问题,以下是完整攻略: 问题背景 Python作为一种非常流行的脚本语言,其易学易用的特点受到了众多开发者的青睐。但是,在开发过程中却经常出现内存使用越来越大的问题,这不仅会影响程序运行效率,也可能导致程序崩溃。接下来,我们将详细讲解Python项目运行导致内存越来越大的原因,并提供解决方案。 问题原…

    云计算 2023年5月18日
    00
  • “互联网+”如何落地?思维和手段两手抓两手都要硬

    “互联网+”如何落地?思维和手段两手抓两手都要硬 “互联网+”是中国政府提出的一项战略,旨在推动传统产业与互联网的深度融合,促进经济转型升级。然而,“互联网+”并不是一蹴而就的,需要思维和手段两手抓两手都要硬。下面是一份关于“互联网+”如何落地的完整攻略,包括背景介绍、思维和手段两方面的内容、示例说明等。 1. 背景介绍 “互联网+”是中国政府提出的一项战略…

    云计算 2023年5月16日
    00
  • ASP.NET Web Api 2实现多文件打包并下载文件的实例

    下面是详细讲解ASP.NET Web Api 2实现多文件打包并下载文件的实例的攻略: 1. 创建Web Api项目和文件上传功能 首先,我们需要创建一个ASP.NET Web Api 2项目,然后添加文件上传的功能。文件上传可以使用ASP.NET Web Api自带的MultipartFormDataStreamProvider类来实现。以下是一个简单的上…

    云计算 2023年5月17日
    00
  • centos6.4安装CloudStack 4.2(开源云计算平台)详解

    CentOS 6.4安装CloudStack 4.2(开源云计算平台)详解 CloudStack是一款开源的云计算平台,可以帮助用户快速构建和管理云计算环境。本文将详细讲解在CentOS 6.4上安装CloudStack 4.2的过程,包括以下内容: 环境准备 安装CloudStack 配置CloudStack 示例说明 环境准备 在安装CloudStack…

    云计算 2023年5月16日
    00
  • 云计算平台(检索篇)-Elasticsearch-Linux优化篇

     Elasticsearch在Linux系统环境中运行,需要对Linux系统进行一系列调优,这样可以提高ElasticSearch的检索效率。主要的需要调优的参数如下:   1.       Linux调整文件数 /etc/security/limits.conf 在文件中增加 * soft nofile 8192 * hard nofile 20480 *…

    云计算 2023年4月10日
    00
  • 【云计算】使用supervisor管理Docker多进程-ntpd+uwsgi+nginx示例最佳实践

    supervisor安装启动: apt-get install supervisor -y # start supervisord nodaemon /usr/bin/supervisord –nodaemon   nginx示例: [program:nginx] command = /usr/sbin/nginx -g ‘daemon off;’ pro…

    云计算 2023年4月11日
    00
  • 跟老齐学Python之大话题小函数(2)

    首先感谢你对网站的关注,下面为您详细介绍“跟老齐学Python之大话题小函数(2)”的完整攻略。 一、文章主要内容 本文主要介绍Python中的函数,包括函数的定义、调用、参数传递和返回值等内容。涵盖了常规函数、匿名函数、高阶函数等多个方面。 二、常规函数 函数是Python中的一种重要的抽象机制。通过函数,我们可以将代码进行分装和分层,提高代码的重用和可维…

    云计算 2023年5月18日
    00
  • 国内服务器 3 分钟将 ChatGPT 接入微信公众号(超详细)

    ?原文链接:https://forum.laf.run/d/364 最近很火的ChatGPT可以说已经满大街可见了,到处都有各种各样的体验地址,有收费的也有免费的,总之是五花八门、花里胡哨。 所以呢,最近我就在研究怎么才能方便快捷的体验到ChatGPT的强大功能,其中一个就是:把ChatGPT接入公众号。毕竟公众号是一种非常流行的社交媒体平台,可以用来提供服…

    云计算 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部