第十一章 文件上传

文件上传

  • 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>
全部评论

相关推荐

半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
06-13 17:33
门头沟学院 Java
顺序不记了,大致顺序是这样的,有的相同知识点写分开了1.基本数据类型2.基本数据类型和包装类型的区别3.==和equals区别4.ArrayList与LinkedList区别5.hashmap底层原理,put操作时会发生什么6.说出几种树型数据结构7.B树和B+树区别8.jvm加载类机制9.线程池核心参数10.创建线程池的几种方式11.callable与runnable区别12.线程池怎么回收线程13.redis三剑客14.布隆过滤器原理,不要背八股,说说真正使用时遇到了问题没有(我说没有,不知道该怎么回答了)15.堆的内存结构16.自己在写项目时有没有遇见过oom,如何处理,不要背八股,根据真实经验,我说不会17.redis死锁怎么办,watchdog机制如何发现是否锁过期18.如何避免redis红锁19.一个表性别与年龄如何加索引20.自己的项目的QPS怎么测的,有没有真正遇到大数量表21.说一说泛型22.springboot自动装配原理23.springmvc与springboot区别24.aop使用过嘛?动态代理与静态代理区别25.spring循环依赖怎么解决26.你说用过es,es如何分片,怎么存的数据,1000万条数据怎么写入库中27.你说用limit,那么在数据量大之后,如何优化28.rabbitmq如何批次发送,批量读取,答了延迟队列和线程池,都不对29.计网知不知道smtp协议,不知道写了对不对,完全听懵了30.springcloud知道嘛?只是了解反问1.做什么的?短信服务,信息量能到千万级2.对我的建议,基础不错,但是不要只背八股,多去实际开发中理解。面试官人不错,虽然没露脸,但是中间会引导我回答问题,不会的也只是说对我要求没那么高。面完问我在济宁生活有没有困难,最快什么时候到,让人事给我聊薪资了。下午人事打电话,问我27届的会不会跑路,还在想办法如何使我不跑路,不想扣我薪资等。之后我再联系吧,还挺想去的😭,我真不跑路哥😢附一张河科大幽默大专图,科大就是大专罢了
查看30道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务