springboot上传文件的数量不确定,怎样确定参数

在之前测试用单个文件上传时,确定了两个参数、一个是文件本身、一个是目标地址的文件夹名称。
上传的文件要和固定的文件夹名称对应。

 public String upload(@RequestParam("file") MultipartFile file, @RequestParam("name") String targetMicroServiceName)

现在想要优化代码到上传多个文件,此时出现了一个问题:就是每一次上传文件的数量不一,有时会上传一个文件,有时上传多个文件,有时上传全部文件。怎样在传递的参数中体现这种形式?
开始的时候我想传递多个文件,就写成file1,file2,name1,name2这种形式,但如果文件数量不固定的话,这种形式就不能要了,请问大神怎样修改

7个回答

public String handleFileUpload(HttpServletRequest request,@RequestParam("names") String[] name) {
    MultipartHttpServletRequest params = ((MultipartHttpServletRequest) request);
    List<MultipartFile> files = params.getFiles("file");
    System.out.println("files" + files);
    //接收前端传过来的字段
    MultipartFile file = null;
    //先设置一个数组来装file路径
    List jars = new ArrayList();
    //设置文件路径
    final String firstPathName = addressConfig.getFirstPath();
    for (int i = 0; i < files.size(); ++i) {
        file = files.get(i);
        if (!file.isEmpty()) {
            try {
                byte[] bytes = file.getBytes();
                // 获取文件名
                String origFileName = file.getOriginalFilename();
                //文件路径
                Path path = Paths.get(firstPathName + origFileName);
                System.out.println("lj: " + path);
                jars.add(path);
                //如果没有files文件夹,则创建
                if (!Files.isWritable(path)) {
                    Files.createDirectories(Paths.get(firstPathName));
                }
                //文件写入指定路径
                Files.write(path, bytes);
                                    }
                                     } catch (Exception e) {
                return "文件上传失败 " + i + " => " + e.getMessage();
            }
        } else {
            return "文件上传失败 " + i + " because the file was empty.";
        }
        System.out.println("mz:" + name[i]);
    }
    return "文件上传成功";
}

```**_用数组_**

传数组回去啊!!通过数组分解得到文件数量

java1949java
墨1949 @RequestParam(value = "file",required = false) MultipartFile[] files
大约一年之前 回复
ladysosoli
ladysosoli 但是文件夹名称需要和文件对应,文件夹名称怎样传呢?也是数组么?怎样对应呢
大约一年之前 回复
 public String upload(HttpServletRequest request, HttpServletResponse response) throws Exception {
 MultipartRequest req = (MultipartRequest) request;
        Map<String, MultipartFile> file_map = req.getFileMap();
        for (String key : file_map.keySet()) {
            MultipartFile multipartFile = file_map.get(key);
            }
    }

@RequestParam("file") MultipartFile[] file

ladysosoli
ladysosoli 但是文件夹名称targetMicroServiceName需要和文件一一对应对应,文件夹名称怎样传呢?
大约一年之前 回复

@RequestParam("files") MultipartFile[] file

ladysosoli
ladysosoli 文件夹名称targetMicroServiceName需要和文件一一对应对应,文件夹名称怎样传呢?
大约一年之前 回复

@RequestParam(value = "file",required = false) MultipartFile[] files

ladysosoli
ladysosoli 但是文件夹名称targetMicroServiceName需要和文件一一对应对应,文件夹名称怎样传呢?
大约一年之前 回复

1:参数1 MultipartFile[] files 参数2:数组(一个字段放文件夹名称,一个字段放files里面特有的值,) 循环的时候比较特有的值就知道哪个对应哪个
2.看你这种描述,感觉是上传文件夹,并不是上传多个文件,,我见过的上传多个文件也是在同一文件夹下的,如果是上传文件夹的话在回复我吧,,,

ladysosoli
ladysosoli 谢谢您,我用上传数组解决啦~
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问