Spring上传多个文件,带有一个参数

时间:2016-06-10 03:01:08

标签: java spring

我正在尝试为上传文件制作一些复杂的表单, 由于它是不同的文件大小,我分开类型的数量,形式如下: multiple and single file upload

我已成功上传具有不同名称的多个文件

<form name="uploadForm" method="post" enctype="multipart/form-data" action="file.spring?action=upload">
<input type="file" name="upFile[0]">
<input type="file" name="upFile[1]">
<input type="file" name="upFile[2]">
</form>

但是对于以下形式

<form name="uploadForm" method="post" enctype="multipart/form-data" action="file.spring?action=upload">
<input type="file" name="upFile">
<input type="file" name="upFile">
<input type="file" name="upFile">
</form>

上传的唯一文件是第一个,

在插入之前,我按如下方式准备Util类以获取fileList,

public static List<Map<String, MultipartFile>> getFilesFromRequest(HttpServletRequest request){
        List<Map<String, MultipartFile>> fileList = new ArrayList<Map<String,MultipartFile>>();

        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Iterator<String> it = multipartRequest.getFileNames();
        while(it.hasNext()){
            String key = it.next();
            if(!multipartRequest.getFile(key).isEmpty()){
                Map<String, MultipartFile> file = new HashMap<String, MultipartFile>();
                file.put(key, multipartRequest.getFile(key));           
                fileList.add(file);
            }
        }

        return fileList;
    }

有什么我想念的吗?

更新:

我通过将MultipartHttpServletRequest更改为DefaultMultipartHttpServletRequest来找到解决方案

感谢@Bart,可以找到答案in this post

1 个答案:

答案 0 :(得分:1)

您对所有文件使用相同的名称(upfile)

<form name="uploadForm" method="post" enctype="multipart/form-data" action="file.spring?action=upload">
<input type="file" name="upFile">
<input type="file" name="upFile">
<input type="file" name="upFile">
</form>

并且在您的Util中,您尝试按名称迭代文件

Iterator<String> it = multipartRequest.getFileNames();

所以你只会得到一个