tituchio
tituchio

Reputation: 1

Spring upload mutltiple file with one parameter

I am trying to make a little bit complex form for uploading files, Since it is different file size, I separate number of type, the form as follows : multiple and single file upload

I have succeeded to upload multi file with different name,

<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>

but for the following 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>

the only file uploaded was the first one,

before inserting, I prepare Util class as follows to get the 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;
    }

is there something that I miss ?

Update :

I found the solution by changing MultipartHttpServletRequest to DefaultMultipartHttpServletRequest

Thanks to @Bart , the answer can be found in this post

Upvotes: 0

Views: 692

Answers (1)

Juned Ahsan
Juned Ahsan

Reputation: 68715

You are using the same name(upfile) for all the files

<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>

and in your Util you are trying to iterate the files by names

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

So you will get only one

Upvotes: 1

Related Questions