zoukankan      html  css  js  c++  java
  • Spring实现文件上传

    (别人的见解)

    在使用springMVC进行系统实现时,springMVC默认的解析器里面是没有加入对文件上传的解析的,这可以方便我们实现自己的文件上传。但如果你想使用springMVC对文件上传的解析器来处理文件上传的时候就需要在spring的applicationContext里面加上springMVC提供的MultipartResolver的申明。这样之后,客户端每次进行请求的时候,springMVC都会检查request里面是否包含多媒体信息,如果包含了就会使用MultipartResolver进行解析,springMVC会使用一个支持文件处理的MultipartHttpServletRequest来包裹当前的HttpServletRequest,然后使用MultipartHttpServletRequest就可以对文件进行处理了。Spring已经为我们提供了一个MultipartResolver的实现,我们只需要拿来用就可以了,那就是org.springframework.web.multipart.commons.CommsMultipartResolver。因为springMVC的MultipartResolver底层使用的是Commons-fileupload,所以还需要加入对Commons-fileupload.jar的支持。

    第一步:导入jar包

      这两个jar包需要导入,在阿里maven上下载最新的就好。(没导入的话一般会有ClassNotFoundException)

      commons-fileupload-1.2.2.jar

      commons-io-2.0.1.jar

    第二步:在spring配置文件.xml中设置文件上传的bean

      CommonsMultipartResolver允许设置的属性有:(一般只设置maxUploadSize)

            defaultEncoding:表示用来解析request请求的默认编码格式,当没有指定的时候根据Servlet规范会使用默认值ISO-8859-1。

        uploadTempDir:设置上传文件时的临时目录,默认是Servlet容器的临时目录。

        maxUploadSize:设置允许上传的最大文件大小,以字节为单位计算。当设为-1时表示无限制,默认是-1。

        maxInMemorySize:设置在文件上传时允许写到内存中的最大值,以字节为单位计算,默认是10240。

     

    第三步:编写前端表单

      form的enctype=”multipart/form-data” 这个属性是上传文件必须的

      

      例如:

      

    第四步:后端处理代码的编写

      第一种写法:

      

      第二种写法:(主要直接将上传文件作为一个请求参数)

      

      多文件上传:

      /**
         * 多文件上传
         */
        @RequestMapping("/upload.do")
        public String uploadFiles(@RequestParam(value="file") MultipartFile[] files,
                HttpServletRequest request) throws Exception{
            //获取项目的路径全称
            String filePath = request.getSession().getServletContext().getRealPath("/");
            System.out.println(filePath);
            //遍历上传的文件(在前段文件的name属性都是name="file")
            for(MultipartFile file : files){
                //使用MultipartFile的transterTo方法,直接将文件存入到指定路径
                file.transferTo(new File(filePath+"upload/"+file.getOriginalFilename()));
            }
             return "redirect:success.html";
        }
  • 相关阅读:
    一件重要的事想要告诉大家 AlexCool
    经典永不过时!重温设计模式 AlexCool
    腾讯云网络核心技术演进实践|好文推荐 AlexCool
    经典永驻,重温设计模式 |硬核! AlexCool
    linux网络全景指南 AlexCool
    Linux调度系统全景指南(终结篇) AlexCool
    大厂的面试官是如何挑人的? AlexCool
    中国大学MOOC数据结构基础习题集、023、求前缀表达式的值
    中国大学MOOC数据结构基础习题集、041、Root of AVL Tree
    中国大学MOOC数据结构基础习题集、052、Saving James Bond Easy Version
  • 原文地址:https://www.cnblogs.com/gangbalei/p/6077791.html
Copyright © 2011-2022 走看看