• SSM-SpringMVC-32:SpringMVC中灌顶传授文件上传


     
    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

     

    我将用自认为最简单的语言,描述Springmvc的文件上传,来将老夫毕生功力灌顶传授给你

    首先文件上传,又简至深

    前提有吗?jar包,form表单里的属性(method="post" enctype="multipart/form-data")

    jar包的节点我给出来:

            <!--文件上传的jar包-->
            <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>1.4</version>
            </dependency>

    下面我开始我第一个案例,最简单的文件上传:

      1.jsp页面:fileupload.jsp

    <%--
      Created by IntelliJ IDEA.
      User: Dawn
      Date: 2018/4/2
      Time: 14:19
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
    <html>
    <head>
        <title>文件上传</title>
    </head>
    <body>
    <h1>文件上传</h1>
        <form action="${pageContext.request.contextPath}/fileuploadfirst" method="post" enctype="multipart/form-data">
            文件1   <input type="file" name="upload"/>
            <input type="submit"/>
        </form>
    </body>
    </html>

      success.jsp

    <%--
      Created by IntelliJ IDEA.
      User: Dawn
      Date: 2018/4/2
      Time: 14:19
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
    <html>
    <head>
        <title>成功</title>
    </head>
    <body>
        <h1>SUCCESS</h1>
    </body>
    </html>

      2.在webapp下你jsp页面的那个包下创建一个文件夹,我的叫upload,里面随便扔个东西,编译后,如果即使这样target目录下还没有upload这个文件夹的话,就手动创建

      3.创建处理器和处理方法

    package cn.dawn.day24fileupload;
    
    import com.sun.org.glassfish.gmbal.ParameterNames;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.servlet.http.HttpSession;
    import java.io.File;
    import java.io.IOException;
    
    /**
     * Created by Dawn on 2018/4/2.
     */
    @Controller
    public class FileupLoad {
    
    
        /*最初始版本*/
        @RequestMapping("/fileuploadfirst")
        public String fileuploadfirst(MultipartFile upload, HttpSession session){
            /*获取上传文件的简单名称例如    1.txt*/
            String childrlPath = upload.getOriginalFilename();
            /*获得一个真实路径*/
            String parentPath = session.getServletContext().getRealPath("/day24/upload");
            /*获取一个完整的文件对象*/
            File file=new File(parentPath,childrlPath);
            /*传输创建到本地*/
            try {
                upload.transferTo(file);
                /*上传成功*/
                return "success";
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            /*上传失败*/
            return "fileupload";
        }
    }

      4.自己的xml配置文件:这儿其实我想删减点的,文件名中文的处理和文件大小限制放在后面讲也行,不过放在这儿,你们应该也能理解

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--包扫描器-->
        <context:component-scan base-package="cn.dawn.day24fileupload"></context:component-scan>
        <!--视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/day24/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
        
        <!--多部分文件解析器-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!--文件名的编码-->
            <property name="defaultEncoding" value="UTF-8"></property>
            <!--限制文件大小--><!--这个单位是byte,我这儿限制的是20mb最大容量-->
            <property name="maxUploadSize" value="20971520"></property>
        </bean>
    
        <!--绑定注解驱动-->
        <mvc:annotation-driven></mvc:annotation-driven>
    
    </beans>

      5.web.xml中修改中央处理器的上下文配置参数为上面那个xml

      6.启动tomcat,访问fileupload.jsp页面

    第二个案例:多文件上传

      1.jsp页面fileuploadmore.jsp:

    <%--
      Created by IntelliJ IDEA.
      User: Dawn
      Date: 2018/4/2
      Time: 14:19
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
    <html>
    <head>
        <title>文件上传</title>
    </head>
    <body>
    <h1>文件上传</h1>
        <form action="${pageContext.request.contextPath}/fileuploadsecond" method="post" enctype="multipart/form-data">
            文件1   <input type="file" name="upload"/>
            文件2   <input type="file" name="upload"/>
            文件3   <input type="file" name="upload"/>
            <input type="submit"/>
        </form>
    </body>
    </html>

      success.jsp

    <%--
      Created by IntelliJ IDEA.
      User: Dawn
      Date: 2018/4/2
      Time: 14:19
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
    <html>
    <head>
        <title>成功</title>
    </head>
    <body>
        <h1>SUCCESS</h1>
    </body>
    </html>

      2.处理器处理方法

    package cn.dawn.day24fileupload;
    
    import com.sun.org.glassfish.gmbal.ParameterNames;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.servlet.http.HttpSession;
    import java.io.File;
    import java.io.IOException;
    
    /**
     * Created by Dawn on 2018/4/2.
     */
    @Controller
    public class FileupLoad {
    
        /*多文件版本*/
        @RequestMapping("/fileuploadsecond")
        public String fileuploadsecond(@RequestParam MultipartFile[] upload, HttpSession session){
            for (MultipartFile item :upload) {
                if(item.getSize()>0) {
                    /*获取上传文件的简单名称例如    1.txt*/
                    String childrlPath = item.getOriginalFilename();
                    /*获得一个真实路径*/
                    String parentPath = session.getServletContext().getRealPath("/day24/upload");
                    /*获取一个完整的文件对象*/
                    File file = new File(parentPath, childrlPath);
                    /*传输创建到本地*/
                    try {
                        item.transferTo(file);
                    /*上传成功*/
    
                    } catch (IOException e) {
                        e.printStackTrace();
                        return "fileuploadmore";
                    }
                }
            }
    
    
            /*上传失败*/
            return "success";
        }
    
    
    
        /*最初始版本*/
        @RequestMapping("/fileuploadfirst")
        public String fileuploadfirst(MultipartFile upload, HttpSession session){
            /*获取上传文件的简单名称例如    1.txt*/
            String childrlPath = upload.getOriginalFilename();
            /*获得一个真实路径*/
            String parentPath = session.getServletContext().getRealPath("/day24/upload");
            /*获取一个完整的文件对象*/
            File file=new File(parentPath,childrlPath);
            /*传输创建到本地*/
            try {
                upload.transferTo(file);
                /*上传成功*/
                return "success";
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            /*上传失败*/
            return "fileupload";
        }
    }

      3.自己的xml配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--包扫描器-->
        <context:component-scan base-package="cn.dawn.day24fileupload"></context:component-scan>
        <!--视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/day24/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
        
        <!--多部分文件解析器-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!--文件名的编码-->
            <property name="defaultEncoding" value="UTF-8"></property>
            <!--限制文件大小--><!--这个单位是byte,我这儿限制的是20mb最大容量-->
            <property name="maxUploadSize" value="20971520"></property>
        </bean>
    
        <!--绑定注解驱动-->
        <mvc:annotation-driven></mvc:annotation-driven>
    
    </beans>

      4.修改web.xml的中央调度器的上下文配置位置为上面那个xml

      5.在webapp下你jsp页面的那个包下创建一个文件夹,我的叫upload,里面随便扔个东西,编译后,如果即使这样target目录下还没有upload这个文件夹的话,就手动创建

      6.启动tomcat,访问fileuploadmore.jsp页面

  • 相关阅读:
    《软件性能测试与LoadRunner实战教程》新书上市
    《你必须掌握的Entity Framework 6.x与Core 2.0》正式出版感想
    《你必须掌握的Entity Framework 6.x与Core 2.0》书籍出版
    别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework
    EntityFramework Core 运行dotnet ef命令迁移背后本质是什么?(EF Core迁移原理)
    已被.NET基金会认可的弹性和瞬态故障处理库Polly介绍
    WebAPi之SelfHost自创建证书启动Https疑难解惑及无法正确返回结果
    Web APi之认证(Authentication)两种实现方式【二】(十三)
    读懂操作系统之虚拟内存TLB与缓存(cache)关系篇(四)
    读懂操作系统之缓存原理(cache)(三)
  • 原文地址:https://www.cnblogs.com/DawnCHENXI/p/8696952.html
Copyright © 2020-2023  润新知