Java:SpringBoot实现文件上传

简介: Java:SpringBoot实现文件上传
package com.mouday.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
 * 文件上传
 * 参考
 * https://blog.csdn.net/gnail_oug/article/details/80324120
 */
@Controller
public class FileController {
    // 获取上传测试页面
    @GetMapping("/upload")
    public String upload() {
        return "upload";
    }
    // 单文件上传
    @PostMapping("/upload")
    @ResponseBody
    public String upload(MultipartFile file) {
        if (file.isEmpty()) {
            return "file is Empty";
        }
        String filename = file.getOriginalFilename();
        try {
            File path = this.getUploadDirectory();
            File dest = new File(path, filename);
            System.out.println(dest.getPath());
            file.transferTo(dest);
            return new File("/upload", filename).toString();
        } catch (IOException e) {
            e.printStackTrace();
            return "error";
        }
    }
    // 多文件上传
    @PostMapping("/multiUpload")
    @ResponseBody
    public List<String> upload(@RequestParam("file") List<MultipartFile> files) {
        List<String> list = new ArrayList<>();
        for (MultipartFile file : files) {
            list.add(this.upload(file));
        }
        return list;
    }
    /**
     * 获取文件保存路径
     * 参考:https://www.bbsmax.com/A/GBJrE67Wz0/
     *
     * @return
     * @throws FileNotFoundException
     */
    public File getUploadDirectory() throws FileNotFoundException {
        String pathName = ResourceUtils.getURL("classpath:").getPath();
        File path = new File(pathName, "/public/upload");
        if (!path.exists()) {
            path.mkdirs();
        }
        return path;
    }
}

前端代码

src/main/resources/templates/upload.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>单文件上传</h2>
<form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="提交">
</form>
<h2>多文件上传</h2>
<form action="/multiUpload" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="file" name="file">
    <input type="file" name="file">
    <input type="submit" value="提交">
</form>
</body>
</html>

因为前端页面需要使用模板引擎,所以需要引入依赖

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

application.properties 配置上传的文件大小限制

# 上传文件总的最大值
spring.servlet.multipart.max-request-size=10MB
# 单个文件的最大值
spring.servlet.multipart.max-file-size=10MB

参考

  1. Spring Boot教程(十三):Spring Boot文件上传
  2. Spring Boot 上传文件 获取项目根路径 物理地址 resttemplate上传文件
目录
打赏
0
0
0
0
81
分享
相关文章
java springboot监听事件和处理事件
通过上述步骤,开发者可以在Spring Boot项目中轻松实现事件的发布和监听。事件机制不仅解耦了业务逻辑,还提高了系统的可维护性和扩展性。掌握这一技术,可以显著提升开发效率和代码质量。
91 33
基于Java+SpringBoot+Vue实现的车辆充电桩系统设计与实现(系统源码+文档+部署讲解等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
52 6
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
38 5
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
45 2
java springboot监听事件和处理事件
通过上述步骤,开发者可以在Spring Boot项目中轻松实现事件的发布和监听。事件机制不仅解耦了业务逻辑,还提高了系统的可维护性和扩展性。掌握这一技术,可以显著提升开发效率和代码质量。
69 13
|
25天前
|
【潜意识Java】使用SpringBoot构建高效的RESTfulAPI
本文介绍了使用Spring Boot构建RESTful API的完整流程,涵盖从项目创建到API测试的各个步骤。
43 1
|
1月前
|
Java Spring Boot监听事件和处理事件
通过上述步骤,我们可以在Java Spring Boot应用中实现事件的发布和监听。事件驱动模型可以帮助我们实现组件间的松耦合,提升系统的可维护性和可扩展性。无论是处理业务逻辑还是系统事件,Spring Boot的事件机制都提供了强大的支持和灵活性。希望本文能为您的开发工作提供实用的指导和帮助。
99 15
Java Springboot监听事件和处理事件
通过这些内容的详细介绍和实例解析,希望能帮助您深入理解Spring Boot中的事件机制,并在实际开发中灵活应用,提高系统的可维护性和扩展性。
59 7
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
95 6
Spring Boot 入门:简化 Java Web 开发的强大工具
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
148 13