Springboot中怎样将两个文件上传,将实体上传至服务器,分别获取名称后存入数据库

我想在SpringBoot中实现一个文件从网页上传 ,能获取名称,存入数据库,但是,不知道怎样将多文件上传到服务器,能获取名称,存入数据库。
应该是用MultipartFiles【】 files,但是不清楚方法里面应该怎样写。

下面是单个文件上传的接收方式

@PostMapping("/input")//3.网页得到提交的接口进来
    public String inputSong(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws IOException {
        if (file.isEmpty()) {
            return "文件为空";
        }

img


@RequestMapping(value = "/imgs", method = RequestMethod.POST)
    public void uploadFile(@RequestParam("file") MultipartFile[] files) {
        for (MultipartFile file : files) {
            System.out.println("file:"+file.getOriginalFilename());
            //1.文件后缀过滤,只允许部分后缀
            //文件的完整名称,如spring.jpeg
            String filename = file.getOriginalFilename();
            //文件名,如spring
            String name = filename.substring(0, filename.indexOf("."));
            //文件后缀,如.jpeg
            String suffix = filename.substring(filename.lastIndexOf("."));

            //2.创建文件目录
            //创建年月文件夹
            Calendar date = Calendar.getInstance();
            File dateDirs = new File(date.get(Calendar.YEAR)+
                    "-"+ (date.get(Calendar.MONTH) + 1));
            String newFilename = UUID.randomUUID().toString().substring(3,20)+suffix;
            //目标文件
            File descFile = new File(rootPath + File.separator + dateDirs + File.separator + newFilename);

            //判断目标文件所在的目录是否存在
            if (!descFile.getParentFile().exists()) {
                //如果目标文件所在的目录不存在,则创建父目录
                descFile.getParentFile().mkdirs();
            }

            //3.存储文件
            //将内存中的数据写入磁盘
            try {
                file.transferTo(descFile);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

打印结果:

img

多文件上传,两种思路:

  1. 服务端每个请求只接收一个文件,客户端ajax异步提交多次,完成多个文件的上传;
  2. 服务端一个请求可以接收多个文件,客户端提交form的时候,填写多个文件。

思路1,服务端还可以实现断点续传功能,客户端还可以针对每个文件的上传过程添加进度条,但是,编程复杂度高一点。
思路2,即目前楼主的方案,在springboot里面,单个的会接收,多个的搞成数组即可。
@RequestParam("file") MultipartFile[] file, ....