当前位置: 首页 > 知识库问答 >
问题:

使用MultipartFile上传多个文件在Spring Boot中不起作用,从JSP获取Controller中的空数组

厉永宁
2023-03-14

我正在使用多部分文件上传多个文件。但是从Jsp页面,当我选择多个文件并单击提交时,我在控制器中得到空数组。

以下是我代码片段,

在pom.xml中

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.3</version>
</dependency> 

通用MultipartResolver Bean配置。

     @Bean
      public CommonsMultipartResolver multipartResolver() {
          CommonsMultipartResolver resolver=new CommonsMultipartResolver();
          resolver.setDefaultEncoding("utf-8");
          resolver.setMaxUploadSize(999999999);
          return resolver;
      }

JSP代码

<form:form method="POST" action="/createRequest"
        enctype="multipart/form-data">
        <input type="file" name="fileUpload" multiple />
        <br>
        <br><br>
        Select User
        <select name="userDirectory">
            <c:forEach items="${userslist}" var="user">
                <option value=${user.userDirectory}>${user.userName}</option>
            </c:forEach>

        </select>

        <input type="submit" value="Upload Files">
    </form:form>

控制器代码

@PostMapping(value = "/createRequest")
    public ModelAndView createRequest(@RequestParam("fileUpload") MultipartFile[] fileUpload,
            @RequestParam("userDirectory") String userDirectory) throws IOException {

        log.info("In createRequest method");
        if (fileUpload != null && fileUpload.length > 0) {
            Flow not coming here because fileUpload.length coming zero.
        }
        return new ModelAndView("success");
    }

在控制器文件Upload.length中,JSP页面的长度为零。感谢任何帮助。

共有1个答案

房子昂
2023-03-14
private void initMultipartResolver(ApplicationContext context)
  {
    try
    {
      this.multipartResolver = ((MultipartResolver)context.getBean("multipartResolver", MultipartResolver.class));
      if (this.logger.isDebugEnabled()) {
        this.logger.debug("Using MultipartResolver [" + this.multipartResolver + "]");
      }
    }
    catch (NoSuchBeanDefinitionException ex)
    {
      this.multipartResolver = null;
      if (this.logger.isDebugEnabled())
        this.logger.debug("Unable to locate MultipartResolver with name 'multipartResolver': no multipart request handling provided");
    }
  }

添加此配置,使用此配置,任何enctype为multipart/form-data的请求将在传递到控制器类之前由multipartResolver处理。

 类似资料:
  • 我想在JSP中读取一个excel文件,为此,我首先使用一个web应用程序项目将该文件上传到:D分区中名为uploads的文件夹中,并尝试使用另一个java项目读取excel上传的文件。两个代码都工作正常。这里是通过web应用程序项目(JSP和SERVLET)上传到特定文件夹的代码: 图书馆 commons-fileupload-1.2.2.jar commons-io-2.1.jar 索引.jsp

  • 本文向大家介绍SpringMVC 文件上传配置,多文件上传,使用的MultipartFile的实例,包括了SpringMVC 文件上传配置,多文件上传,使用的MultipartFile的实例的使用技巧和注意事项,需要的朋友参考一下 基本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤 文件上传项目的

  • 问题内容: Java控制器类: html文件: 角js: 这是我在服务器日志中无法理解的错误: 问题答案: 尝试以下方法。对我来说很好。 HTML你应该有 注意输入的名称。 然后在JS控制器方法中 现在在您的Java Controller类中 希望这对您有用。并且也要进行异常处理。

  • 问题内容: Java控制器类: html文件: 角js: 这是我在服务器日志中无法理解的错误: 问题答案: 尝试以下方法。对我来说很好。 HTML你应该有 注意输入的名称。 然后在JS控制器方法中 现在在您的Java Controller类中 希望这对您有用。并且也要进行异常处理。

  • 问题内容: 我正在尝试从Angular服务hero.service.ts获取json数据。当在MemoryDataService中使用伪造的HTTP API时,一切正常,我从in-memory- data.service.ts文件中获取json数据。但是,当我尝试从真实的json文件中获取数据时,它不起作用,并且在浏览器中出现错误“找不到集合”。 以下是文件内容(所有3个文件都位于app /文件夹

  • 问题内容: 基本上,当我在表单中包含并使用文件上传器时,似乎取消了:remote => true功能,并以HTML代替JS处理该动作。有任何想法吗? 问题答案: 我只是遇到了同样的问题,因此发现了以下替代方法可以使它起作用: 宝石remotipart => http://www.alfajango.com/blog/rails-3-ajax-file-uploads-with- remotipar