SpringMVC请求(下)-文件上传

举报
不会压弯的小飞侠 发表于 2022/08/08 23:39:25 2022/08/08
【摘要】 🍁博客主页:👉不会压弯的小飞侠 ✨欢迎关注:👉点赞👍收藏⭐留言✒ ✨系列专栏:👉SpringMVC专栏 ✨如果觉得博主的文章还不错的话,请三连支持一下博主。 🔥欢迎大佬指正,一起 学...

在这里插入图片描述

🍁博客主页:👉不会压弯的小飞侠
✨欢迎关注:👉点赞👍收藏⭐留言✒
✨系列专栏:👉SpringMVC专栏
✨如果觉得博主的文章还不错的话,请三连支持一下博主。
🔥欢迎大佬指正,一起 学习!一起加油!

在这里插入图片描述


一、文件上传三要素

  • 表单项type= “file"
  • 表单的提交方式是post
  • 表单的enctype属性是多部分表单形式,及enctype=“multipart/form-data".
<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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

二、文件上传原理

  • 当form表单修改为多部分表单时,request.getParameter0将失效
  • enctype= “application/x-www-form-urlencoded”时,form表单的正文内容格式是:key=value&key=value&key=value
  • 当form表单的enctype取值为Mutilpart/form-data时,请求正文内容就变成多部分形式。

三、单文件上传步骤

  • 导入fileupload和io坐标
  • 配置文件上传解析器
  • 编写文件上传代码

1.导入fileload和io坐标

<dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.2.2</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.11.0</version>
    </dependency>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.配置文件上传解析器

 <!--配置文件上传解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"></property>
        <property name="maxInMemorySize" value="500000"></property>
    </bean>


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.编写文件上传代码

    @RequestMapping(value = "/quick21")
    @ResponseBody  //告诉SpringMVC框架不进行视图跳转,直接进行数据响应
    public void save21(String username, MultipartFile upload) throws IOException {
        System.out.println(username);
        /*System.out.println(upload);*/
        //获得上传文件名称
        String originalFilename = upload.getOriginalFilename();
        upload.transferTo(new File("F:\\upload\\"+originalFilename));
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

四、多文件上传

1.方式一

<form action="${pageContext.request.contextPath}/user/quick22" method="post" enctype="multipart/form-data">
    名称<input type="text" name="username"><br>
    文件<input type="file" name="upload"><br>
    文件<input type="file" name="upload1"><br>
    <input type="submit" value="提交">
</form>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
@RequestMapping(value = "/quick22")
    @ResponseBody  //告诉SpringMVC框架不进行视图跳转,直接进行数据响应
    public void save22(String username, MultipartFile upload,MultipartFile upload1) throws IOException {
        System.out.println(username);
        /*System.out.println(upload);*/
        //获得上传文件名称
        String originalFilename = upload.getOriginalFilename();
        upload.transferTo(new File("F:\\upload\\"+originalFilename));
        String originalFilename1 = upload1.getOriginalFilename();
        upload.transferTo(new File("F:\\upload\\"+originalFilename1));
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.方式二(数组)

<form action="${pageContext.request.contextPath}/user/quick23" method="post" enctype="multipart/form-data">
    名称<input type="text" name="username"><br>
    文件<input type="file" name="upload"><br>
    文件<input type="file" name="upload"><br>
    <input type="submit" value="提交">
</form>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
 @RequestMapping(value = "/quick23")
    @ResponseBody  //告诉SpringMVC框架不进行视图跳转,直接进行数据响应
    public void save23(String username, MultipartFile[] upload) throws IOException {
        System.out.println(username);
        /*System.out.println(upload);*/
        //获得上传文件名称
        for (MultipartFile multipartFile : upload) {
            String originalFilename = multipartFile.getOriginalFilename();
            multipartFile.transferTo(new File("F:\\upload\\"+originalFilename));

        }
    }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

五、知识要点

  • MVC实现数据请求方式
    • 基本类型参数
    • PoJo类型参数
    • 数组类型参数
    • 集合类型参数
  • MVC获取数据细节
    • 中文乱码问题
      • @RequestParam和@Pathvariable自定义类型转换器
      • 获得servlet相关API
      • @RequestHeader和cookievalue文件上传

文章来源: blog.csdn.net,作者:不会压弯的小飞侠,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_43514330/article/details/125537631

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。