spring MVC多个文件上传

时间:2014-05-28 17:21:55

标签: jsp spring-mvc

我使用spring MVC和JSP。我想上传2个文件,问题是只有一个文件正在上传。以下是代码:

jsp代码:

   <form id="myform" name="myform" action="/createRequest.htm" enctype="multipart/form-data" method="POST">
        //form elements like textbox, checkbox
     <tr>
                    <th class="RelReqstAllign"></th><td> (Or)<input type="file" name="fileUpload" size="50"/></td>
            </tr>
            <tr>
                    <th class="RelReqstAllign"></th><td><input type="file" name="fileUpload" size="50" /></td>
            </tr>
</form>

以下是弹簧控制器代码:

@RequestMapping(value = "/createRequest", method = RequestMethod.POST)
    public ModelAndView createRequest(final HttpServletRequest request,
            final HttpServletResponse response,
            final @ModelAttribute("spRequestDTO") SPRequestDTO dto,
            final BindingResult beException,
            final @RequestParam("buttonName") String buttonName,
            @RequestParam CommonsMultipartFile[] fileUpload) throws IOException {

            //logic

        if (fileUpload != null && fileUpload.length > 0) {
            for (CommonsMultipartFile aFile : fileUpload) {

                System.out.println("Saving file: "
                        + aFile.getOriginalFilename());

                if (!aFile.getOriginalFilename().equals("")) {
                    try {
                        aFile.transferTo(new File(saveDirectory + aFile.getOriginalFilename()));
                    } catch (IllegalStateException e) {

                        e.printStackTrace();
                    } catch (IOException e) {

                        e.printStackTrace();
                    }
                }
            }
        }
    }

当我在控制器中调试时,“fileUpload”只显示一个文件,即使我上传了两个文件。

以下是Spring-mvc.xml中添加的代码

 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    </bean>

2 个答案:

答案 0 :(得分:3)

就这样做。您不需要在表单中添加超过input标签来选择多个文件

  <input type="file" name="fileUpload" size="50" multiple/>    

通过点击键盘上的ctrl选项,用户可以在系统中选择多个文件。

然后,在你的动作课上,按你的意愿做你的东西。

确保{bean}类中的fileUpload变量为文​​件数组

答案 1 :(得分:2)

几周前我遇到了类似的问题,我无法让处理程序方法处理多个MultipartFiles。作为解决方案,我注入HttpServletRequest并将其投放到DefaultMultipartHttpServletRequest以便能够访问所有文件。

List<MultipartFile> files = ((DefaultMultipartHttpServletRequest) request)
    .getFiles("fileUpload");
相关问题