第十一章 文件上传

文件上传

  • Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的。

  • Spring 用 Jakarta Commons FileUpload 技术实现了一个 MultipartResolver 实现类:CommonsMultipartResovler

  • Spring MVC 上下文中默认没有装配 MultipartResovler,因此默认情况下不能处理文件的上传工作,如果想使用 Spring 的文件上传功能,需现在上下文中配置 MultipartResolver
    图片说明

  • 配置 MultipartResolver
    defaultEncoding: 必须和用户 JSP 的 pageEncoding 属性一致,以便正确解析表单的内容
    为了让 CommonsMultipartResovler 正确工作,必须先将 Jakarta Commons FileUpload 及 Jakarta Commons io 的类包添加到类路径下。

  • 导包
    图片说明

  • javaweb代码文件上传
    图片说明

  • spring 只要在springmvc配置文件中,编写一个配置,如配置文件上传解析器(MultipartResolver 9大组件之一)

    commons 根据导入包的组件来决定
      <!-- 根据9大组件初始化的代码 要求 id必须是multipartResolver 配置文件上传解析器-->
      <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--设置文件大小的最大值-->
          <property name="maxUploadSize" value="#{1024*1024*20}"/>
    <!--编码格式-->
          <property name="defaultEncoding" value="utf-8"></property>
      </bean>
    <h1>${msg }</h1>
    <form action="${ctp }/uploadInfo" method="post" enctype="multipart/form-data">
      <input type="text" name="name"/>
      <input type="file" name="img"/>
      <input type="submit" value="提交">
    </form>
      @RequestMapping(value = "/uploadInfo")
      public String downloadFile(@RequestParam(value = "name", required = false) String name,
              @RequestParam("img") MultipartFile img,Model mv) throws IOException {
          if(img==null){
              mv.addAttribute("msg","文件上传失败");
          }
          else {
              img.transferTo(new File("C:\\Users\\cznczai\\Desktop\\"+img.getOriginalFilename()));
              mv.addAttribute("msg","文件上传成功");
          }
          System.out.println(name);
          System.out.println("文件项input标签的名字"+img.getName());
          System.out.println("文件的名字"+img.getOriginalFilename());
          return "hello";
      }

    图片说明

    <dependency>  
          <groupId>commons-fileupload</groupId>  
          <artifactId>commons-fileupload</artifactId>  
          <version>1.3.1</version>  
      </dependency>
    
      <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
          <version>2.6</version>
      </dependency>

思考多个文件上传

代码

    @RequestMapping(value = "/uploadInfo")
    public String downloadFile(@RequestParam(value = "name", required = false) String name,
            @RequestParam("imgs") MultipartFile[] imgs, Model mv) throws IOException {
        for (MultipartFile img : imgs) {
            img.transferTo(new File("C:\\Users\\cznczai\\Desktop\\" + img.getOriginalFilename()));
            System.out.println(name);
            System.out.println("文件项input标签的名字" + img.getName());
            System.out.println("文件的名字" + img.getOriginalFilename());
        }
        return "hello";
    }

表单的代码

《h1>${msg }《/h1>
《form action="${ctp }/uploadInfo" method="post" enctype="multipart/form-data">
    《input type="text" name="name"/>
    《input type="file" name="imgs"/>
    《input type="file" name="imgs"/>
    《input type="file" name="imgs"/>
    《input type="file" name="imgs"/>
    《input type="submit" value="提交">
《/form>
全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务