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

    Spring mvc文件上传实现

    jsp页面客户端表单编写

    三个要素:
    1.表单项type=“file”
    2.表单的提交方式:post
    3.表单的enctype属性是多部分表单形式:enctype=“multipart/form-data”
    会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表名文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。
    3.1.当form表单修改为多部分表单时,request.getParameter()将失效。
    3.2.enctype=“application/x-www-form-urlencoded”时,form表单的正文内容格式是:key=value&key=value&key=value
    3.3.当form表单的enctype取值为Mutilpart/form-data时,请求正文内容就变成多部分形式:

    在这里插入图片描述

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <form action="${pageContext.request.contextPath}/quick16" method="post" enctype="multipart/form-data">
        名称:<input type="text" name="name"><br>
        文件:<input type="file" name="uploadFile">
        <input type="submit" value="点击提交">
    </form>
    </body>
    </html>
    

    需要导入的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>2.6</version>
            </dependency>
    

    配置文件上传解析器

     <bean id="commonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!--上传文件的编码类型-->
            <property name="defaultEncoding" value="utf-8"></property>
            <!--上传单个文件的大小-->
            <property name="maxUploadSizePerFile" value="50000000"></property>
            <!--上传文件的总大小-->
            <property name="maxUploadSize" value="54288600"></property>
        </bean>
    

    编写文件上传代码

      @RequestMapping(value = "/quick17")
        /* 告诉SpringMvc框架,方法返回的字符串不是跳转是直接在http响应体中返回*/
        @ResponseBody
        public void save17(String username, MultipartFile uploadFile) throws IOException {
           /*获取原始文件名*/
            String originalFilename = uploadFile.getOriginalFilename();
            /*保存到服务器上这里是本地*/
            uploadFile.transferTo(new File("F:\upload\"+originalFilename));
        }
    

    上传多个文件

    jsp表单代码

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <form action="${pageContext.request.contextPath}/quick18" method="post"
          enctype="multipart/form-data">
        名称:<input type="text" name="name"><br>
        文件1:<input type="file" name="uploadFiles">
        文件2: <input type="file" name="uploadFiles">
        <input type="submit" value="点击提交">
    </form>
    
    </body>
    </html>
    

    服务器端代码

    @RequestMapping(value = "/quick18")
        /* 告诉SpringMvc框架,方法返回的字符串不是跳转是直接在http响应体中返回*/
        @ResponseBody
        public void save18(String username, MultipartFile[] uploadFiles) throws IOException {
            for (MultipartFile uploadFile : uploadFiles) {
                /*获取原始文件名*/
                String originalFilename = uploadFile.getOriginalFilename();
                /*保存到服务器上这里是本地*/
                uploadFile.transferTo(new File("F:\upload\"+originalFilename));
            }
        }
    

    在这里插入图片描述

    成功保存到本地

    在这里插入图片描述

    以上就是SpringMVC系列的第三章,主要侧重SpringMVC上传文件的操作,我后续会持续更新Springmvc系列课程,本博客主要侧重于数据结构于算法和java开发,觉得我的文章有帮助的小伙伴可以关注我,有疑问可评论私信,相逢即是缘,大家高处见

    在这里插入图片描述

  • 相关阅读:
    Linux进程间通信—消息队列
    Linux进程间通信—信号
    Linux进程间通信—信号量
    Linux进程间通信—管道
    Linux进程间通信:管道,信号量,消息队列,信号,共享内存,套接字
    安全文件传输系统
    嵌入式mp3播放器
    用C语言实现面向对象的开发
    Haskell 差点儿无痛苦上手指南
    Oracle EBS 入门
  • 原文地址:https://www.cnblogs.com/pjhaymy/p/13837589.html
Copyright © 2011-2022 走看看