ladysosoli
2018-11-21 03:28
采纳率: 95.7%
浏览 1.8k
已采纳

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

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • ladysosoli 2018-11-23 07:11
    已采纳
    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 "文件上传成功";
    }
    
    
    ```**_用数组_**
    
    
    点赞 打赏 评论
  • ForHeartOnly 2018-11-21 03:32

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

    点赞 打赏 评论
  • wlq199101 2018-11-21 03:37
     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);
                }
        }
    
    点赞 打赏 评论
  • weixin_42592650 2018-11-21 03:53

    @RequestParam("file") MultipartFile[] file

    点赞 打赏 评论
  • xiaoc_xiaoc 2018-11-21 08:16

    @RequestParam("files") MultipartFile[] file

    点赞 打赏 评论
  • 墨&汐 2018-11-21 09:12

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

    点赞 打赏 评论
  • hometing218 2018-11-23 08:05

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

    点赞 打赏 评论

相关推荐 更多相似问题