SpringBoot上传文件

SpringBoot单文件上传,多文件上传

环境/版本一览:

  • 开发工具:Intellij IDEA 2020.2.3
  • springboot:2.3.7.RELEASE
  • jdk:1.8.0_211
  • maven: 3.6.3

目录结构

1.搭建项目

1.1 先创建一个springboot工程加入web依赖

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

1.2 在application.yml加入配置

spring:
  servlet:
    multipart:
      max-request-size: 5GB  # 上传文件总的最大值 默认10MB
      max-file-size: 1GB #单个文件最大值 默认10MB

1.3 编写上传文件的接口

package com.niu.springbootuploadfile.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

/**
 * @description: 上传文件控制器
 * @author: nxq email: niuxiangqian163@163.com
 * @createDate: 2020/12/19 4:09 下午
 * @updateUser: nxq email: niuxiangqian163@163.com
 * @updateDate: 2020/12/19 4:09 下午
 * @updateRemark:
 * @version: 1.0
 **/
@RestController
public class UpLoadController {

    @PostMapping("/upload")
    public Object upload(@RequestParam("file")MultipartFile file){
        return saveFile(file);
    }
    @PostMapping("/multiUpload")
    public Object multiUpload(@RequestParam("file")MultipartFile[] files){
        System.out.println("文件的个数:"+files.length);
        for (MultipartFile f : files){
            saveFile(f);
        }
        return "ok";
    }

    private Object saveFile(MultipartFile file){
        if (file.isEmpty()){
            return "未选择文件";
        }
        String filename = file.getOriginalFilename(); //获取上传文件原来的名称
        String filePath = "/Users/laoniu/temp/";
        File temp = new File(filePath);
        if (!temp.exists()){
            temp.mkdirs();
        }

        File localFile = new File(filePath+filename);
        try {
            file.transferTo(localFile); //把上传的文件保存至本地
            System.out.println(file.getOriginalFilename()+" 上传成功");
        }catch (IOException e){
            e.printStackTrace();
            return "上传失败";
        }

        return "ok";
    }
}

1.4 创建上传文件的网页

在static目录下创建index.html,加入以下内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传文件</title>
</head>
<body>
<center>
    <h3>上传单个文件</h3>
    <form action="/upload" enctype="multipart/form-data" method="post">
        <input type="file" name="file" required><br>
        <input type="submit" value="上传单个文件">
    </form>
    <hr>
    <h3>上传多个文件</h3>
    <form action="/multiUpload" enctype="multipart/form-data" method="post">
        <input type="file" name="file" required><br>
        <input type="file" name="file" required><br>
        <input type="file" name="file" required><br>
        <input type="submit" value="上传多个文件">
    </form>
</center>
</body>
</html>

注意:<input type="file" name="file"> 标签里的name属性file必须和 后端@RequestParam("file")里的file一致

2.启动测试

访问: http://localhost:8080/index.html

2.1 单个文件上传测试

上传成功

2.2 多个文件上传测试

多文件上传也ok

代码已经推送至github :https://github.com/NiuXiangQian/springboot-uploadfile

正文到此结束
评论插件初始化中...
Loading...