IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> SpringMVC获取请求数据-文件上传 -> 正文阅读

[开发工具]SpringMVC获取请求数据-文件上传

SpringMVC获取请求数据-文件上传

1、文件上传的三要素

  1. 表单项type=“file”
  2. 表单的提交方式是post
  3. 表单的enctype属性是多部分表单形式,及enctype="multipart/form-data’

2、文件上传的快速入门

  1. 前端页面实现

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>文件上传</title>
    </head>
    <body>
      <form action="${pageContext.request.contextPath}/user/quick21" method="post" enctype="multipart/form-data">
        名称:<input type="text" name="username"><br>
        文件:<input type="file" name="upload"><br>
        <input type="submit" value="上传文件">
      </form>
    </body>
    </html>
    
    
  2. 文件上传原理

    1. 当form表单修改为多部分表单时,request.getParameter()将失效

    2. enctype=“application/x-www-form-urlencoded”时,form表单的正文内容格式是:
      key=value&key=value&key=value

    3. 当form表单的enctype取值为Mutilpart/form-data时,请求正文内容就变成多部分形式:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gxpc0ifv-1651136728911)(image/image-20220428162644738.png)]

  3. 单文件上传步骤

    1. 导入fileuploadio坐标

      找到pox.xml配置文件导入坐标

      <!--文件上传的坐标-->
      <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.4</version>
      </dependency>
      <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.5</version>
      </dependency>
      
    2. 配置文件上传解析器

      spring-mvc.xml核心配置文件中配置文件上传解析器

      <!--配置文件上传的解析器-->
      <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
          <!--注入参数-->
          <!--上传文件的格式-->
          <property name="defaultEncoding" value="UTF-8"/>
          <!--总上传文件大小-->
          <property name="maxUploadSize" value="50000"/>
      </bean>
      
    3. 编写后端文件上传代码

      MultipartFile uploadFile的uploadFile需要与上传文件的input的name对应

      @Controller
      @RequestMapping("/user")
      public class UserController {
      
          /**
           * 文件上传
           * @param username 接收的文件名称
           * @param uploadFile 接收的文件name
           */
          @RequestMapping("quick22")
          @ResponseBody
          public void save22(String username, MultipartFile uploadFile) throws IOException {
              System.out.println(username);
              // 获得上传文件的名称
              String filename = uploadFile.getOriginalFilename();
              // 使用内置的文件存储到本地
              uploadFile.transferTo(new File("C:\\Users\\zhong\\Desktop"+filename));
          }
      }
      
  4. 多文件上传

    方式一:多个上传input,后端多个接收
    <form action="${pageContext.request.contextPath}/user/quick22" method="post" enctype="multipart/form-data">
      名称:<input type="text" name="username"><br>
      文件1:<input type="file" name="uploadFile"><br>
      文件2:<input type="file" name="uploadFile2"><br>
      <input type="submit" value="上传文件">
    </form>
    

    后端代码实现

    /**
     * 多文件上传1
     * @param username 接收的文件名称
     * @param uploadFile 接收的文件name
     */
    @RequestMapping("quick23")
    @ResponseBody
    public void save23(String username, MultipartFile uploadFile, MultipartFile uploadFile2) throws IOException {
        System.out.println(username);
        // 获得上传文件的名称
            String filename = uploadFile.getOriginalFilename();
            String filename2 = uploadFile2.getOriginalFilename();
            // 使用内置的文件存储到本地
            uploadFile.transferTo(new File("C:\\Users\\zhong\\Desktop"+filename));
            uploadFile2.transferTo(new File("C:\\Users\\zhong\\Desktop"+filename2));
    }
    
    方式二:多个上传input,同一个name,后端使用MultipartFile[]数组接收

    前端代码实现

    <form action="${pageContext.request.contextPath}/user/quick24" method="post" enctype="multipart/form-data">
      名称:<input type="text" name="username"><br>
      文件1:<input type="file" name="uploadFile"><br>
      文件2:<input type="file" name="uploadFile"><br>
      <input type="submit" value="上传文件">
    </form>
    

    后端代码接收实现

    /**
     * 多文件上传1
     * @param username 接收的文件名称
     * @param uploadFile 接收的文件name
     */
    @RequestMapping("quick24")
    @ResponseBody
    public void save24(String username, MultipartFile[] uploadFile) throws IOException {
        System.out.println(username);
        for (MultipartFile multipartFile : uploadFile) {
            String originalFilename = multipartFile.getOriginalFilename();
            multipartFile.transferTo(new File("C:\\Users\\zhong\\Desktop"+originalFilename));
        }
    }
    
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:56:38  更:2022-05-01 15:56:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:30:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码