springboot文件上传

简介: enctype就是encodetype就是编码类型的意思。multipart/form-data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思。
<form role="form" th:action="@{/upload}" method="post" 
enctype="multipart/form-data">#enctype这玩意一定要加上不然就报错(多文件)
    <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="Password">
    </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 out
        </label>
    </div>
    <button type="submit" class="btn btn-primary">提交</button>
</form>


enctype就是encodetype就是编码类型的意思。


multipart/form-data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思。


需要注意的是:默认情况下,enctype的值是application/x-www-form-urlencoded,不能用于文件上传,只有使用了multipart/form-data,才能完整的传递文件数据。


application/x-www-form-urlencoded不是不能上传文件,是只能上传文本格式的文件,multipart/form-data是将文件以二进制的形式上传,这样可以实现多种类型的文件上传。


@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.getSize(),photos.length);
        if(!headerImg.isEmpty()){
            //保存到文件服务器,OSS服务器
            String originalFilename = headerImg.getOriginalFilename();
            headerImg.transferTo(new File("H:\\cache\\"+originalFilename));
        }
        if(photos.length > 0){
            for (MultipartFile photo : photos) {
                if(!photo.isEmpty()){
                    String originalFilename = photo.getOriginalFilename();
                    photo.transferTo(new File("H:\\cache\\"+originalFilename));
                }
            }
        }
        return "main";
    }
}


相关文章
|
Java
Springboot单文件上传大小限制 FileUploadBase$FileSizeLimitExceededException:
找到的解决方案: application.properties中配置 spring.http.
2397 0
|
Java
Springboot文件上传
Springboot文件上传
57 0
SpringBoot文件上传
SpringBoot文件上传
|
Java 开发者
SpringBoot 实现文件上传|学习笔记
快速学习 SpringBoot 实现文件上传
525 0
SpringBoot 实现文件上传|学习笔记
SpringBoot-05-之上传文件
需要使用引擎模板thymeleaf,如果不清楚,可见04--SpringBoot之模板引擎--thymeleaf 1.新建表单网页:templates/upfile.
985 0
|
存储 前端开发 Java
SPringBoot实现文件上传功能
准备工作:在开始之前,确保你已经创建好了一个Spring Boot项目,并且配置了适当的开发环境。你可以使用Spring Initializr进行项目的初始化,然后添加所需的依赖。
222 0
|
监控 前端开发 Java
9、SpringBoot2.0实现文件上传功能(九)
上传文件是互联网中常常应用的场景之一,最典型的情况就是上传头像等,今天带大家做一个Spring Boot上传文件的小案例。
217 0
9、SpringBoot2.0实现文件上传功能(九)
springboot 文件下载
springboot 文件下载
112 0
|
存储 开发框架 Java
SpringBoot2.x系列教程23--SpringBoot中实现文件上传
前言 文件上传是开发时比较常见的功能之一,但是SpringBoot并没有提供额外的文件上传技术,还是依赖于SpringMVC的文件上传技术。因为在SpringBoot中集成了SpringMVC的很多常用功能,所以SpringBoot的Web模块中也包含了文件上传部分,其实实现起来没有太多的难度。 本章节 壹哥 就给大家讲一下在Spring Boot中如何实现单个文件和多个文件的上传功能。 一. 概述 1. MultipartFile简介 在SpringMVC时代,就提供了MultipartFile这个封装类,它包含了文件的二进制流和文件相关属性(文件名、大小等),而在Spring Boot中
568 0