二、SpringBoot2核心功能--02web开发-18文件上传

文件上传

  • 1、前端页面表单代码
  • 2、后台控制层代码
  • 3、修改默认的文件上传大小

1、前端页面表单代码

<form role="form" th:action="@{/upload}" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="exampleInputEmail1">邮箱label>
        <input type="email" name="email" class="form-control" id="exampleInputEmail1"
               placeholder="Enter email">
    div>
    <div class="form-group">
        <label for="exampleInputPassword1">姓名label>
        <input type="text" name="username" class="form-control" id="exampleInputPassword1" 
        placeholder="username">
    div>
    <div class="form-group">
        <label for="exampleInputFile">头像label>
        <input type="file" name="headerImg" id="exampleInputFile">
    div>
    <div class="form-group">
        <label for="exampleInputFile">生活照label>
        <input type="file" name="photos" multiple>
    div>
    <div class="checkbox">
        <label><input type="checkbox"> Check me outlabel>
    div>
    <button type="submit" class="btn btn-primary">提交button>
form>

二、SpringBoot2核心功能--02web开发-18文件上传_第1张图片

2、后台控制层代码

@RequestParam和@RequestPart 的区别:

  • 1.@RequestPart这个注解用在multipart/form-data表单提交请求的方法上。
  • 2.支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的。
  • 3.@RequestParam也同样支持multipart/form-data请求。
  • 4.他们最大的不同是,当请求方法的请求参数类型不再是String类型的时候。
  • 5.@RequestParam适用于name-valueString类型的请求域,@RequestPart适用于复杂的请求域(像JSON,XML)。

二、SpringBoot2核心功能--02web开发-18文件上传_第2张图片

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

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


@Slf4j
@Controller
public class FormTestController {
     

    @GetMapping("/form_layouts")
    public String form_layouts(){
     
        return "form/form_layouts";
    }

    @PostMapping("/upload")
    public String upload(@RequestParam("email") String email,
                         @RequestParam("username") String username,
                         @RequestPart("headerImg") MultipartFile headerImg,
                         @RequestPart("photos") MultipartFile[] photos) throws IOException {
     
        //控制台打印输出前端表单的信息
        log.info("上传的信息:email={},username={},headerImg={},photos={}",
                email,username,headerImg,photos);
        //上传单个文件
        if(!headerImg.isEmpty()){
     
            //将数据保存到文件服务器
            String originalFilename = headerImg.getOriginalFilename();
            headerImg.transferTo(new File("E:\\"+originalFilename));
        }
        //同时上传多个文件
        if(photos.length>0){
     //判断photots是否为空
            for(MultipartFile photo : photos){
     //photos中存在文件,遍历photos中的每一个文件photo
                if(!photo.isEmpty()){
     //判断photo是否为空
                    String originalFilename = photo.getOriginalFilename();//如果photo有值,获取文件名
                    //将上传的文件保存到目标路径下
                    photo.transferTo(new File("E:\\cache\\" + originalFilename));
                }
            }
        }
        return "main";
    }

}

3、修改默认的文件上传大小

找到MultipartAutoConfiguration类中的MultipartProperties属性配置类
二、SpringBoot2核心功能--02web开发-18文件上传_第3张图片二、SpringBoot2核心功能--02web开发-18文件上传_第4张图片

二、SpringBoot2核心功能--02web开发-18文件上传_第5张图片

# 设置单个上传文件大小
spring.servlet.multipart.max-file-size=5MB
# 设置上传文件的大小
spring.servlet.multipart.max-request-size=20MB

你可能感兴趣的:(SpringBoot2)