AI提示词:你是一名java开发工程师,现在正在学习文件上传功能,如何基于HTML+SpringBoot完成文件上传功能。

1). 生成的前端代码形式如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传文件</title>
</head>
<body>

    <form action="/upload" method="post" enctype="multipart/form-data">
        姓名: <input type="text" name="username"><br>
        年龄: <input type="text" name="age"><br>
        头像: <input type="file" name="file"><br>
        <input type="submit" value="提交">
    </form>

</body>
</html>

文件上传至本地

上传文件的原始form表单,要求表单必须具备以下三点(上传文件页面三要素):

  • 表单必须有file域,用于选择要上传的文件
  • 表单提交方式必须为POST:通常上传的文件会比较大,所以需要使用 POST 提交方式
  • 表单的编码类型enctype必须要设置为:multipart/form-data:普通默认的编码格式是不适合传输大型的二进制数据的,所以在文件上传时,表单的编码格式必须设置为multipart/form-data

前端文件放置位置

2). 生成的服务端代码形式如下

@Slf4j
@RestController
public class UploadController {

    /**
     * 上传文件 - 参数名file
     */
    @PostMapping("/upload")
    public Result upload(String username, Integer age , MultipartFile file) throws Exception {
        log.info("上传文件:{}, {}, {}", username, age, file);
        if(!file.isEmpty()){
            file.transferTo(new File("D:\\images\\" + file.getOriginalFilename()));
        }
        return Result.success();
    }

}

在定义的方法中接收提交过来的数据 (方法中的形参名和请求参数的名字保持一致)

  • 用户名:String name
  • 年龄: Integer age
  • 文件: MultipartFile file

img3

Spring中提供了一个API:MultipartFile,使用这个API就可以来接收到上传的文件

问题1:如果表单项的名字和方法中形参名不一致,该怎么办?

public Result upload(String username, 
                        Integer age,  
                        MultipartFile image) //image形参名和请求参数名file不一致

解决:使用@RequestParam注解进行参数绑定

public Result upload(String username,
                     Integer age, 
                     @RequestParam("file") MultipartFile image)

最后修改:2025 年 09 月 10 日
如果觉得我的文章对你有用,请随意赞赏