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>

二、文件上传原理

  • 当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>

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>

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.方式一

<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>
@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));
    }

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>
 @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));

        }
    }

五、知识要点

  • MVC实现数据请求方式

    • 基本类型参数
    • PoJo类型参数
    • 数组类型参数
    • 集合类型参数
  • MVC获取数据细节

    • 中文乱码问题

      • @RequestParam和@Pathvariable自定义类型转换器
      • 获得servlet相关API
      • @RequestHeader和cookievalue文件上传
相关文章
|
人工智能 搜索推荐 数据可视化
10个适合产品经理使用的AI生成PPT工具推荐!
AIGC时代,有哪些好用的AI生成PPT工具呢?这篇文章来给各位介绍适合产品经理使用的10款AI PPT软件!
|
编解码 达摩院 监控
阿里云 Elasticsearch 向量检索,轻松玩转人脸识别、搜索推荐等29个业务场景
简介:我们知道,市面上有不少开源的向量检索库供大家选择使用,例如 Facebook 推出的 Faiss 以及 Nswlib,虽然选择较多,但业务上需要用到向量检索时,依旧要面对四大共性问题。
11071 1
阿里云 Elasticsearch 向量检索,轻松玩转人脸识别、搜索推荐等29个业务场景
|
索引 Windows
技术笔记:RTF文件格式
技术笔记:RTF文件格式
691 0
|
监控 定位技术 Android开发
如何获得你的准确位置及iphon手机应用定位不准确原因分析
如何获得你的准确位置及iphon手机应用定位不准确原因分析
616 0
|
Linux Perl
【linux】awk用法:在每行新增额外字符串
【linux】awk用法:在每行新增额外字符串
430 0
|
机器学习/深度学习 编解码 人工智能
|
域名解析 缓存 运维
简谈 CDN “调度异常” 导致的系列问题
## 背景 为什么要谈这个话题?缘由于现在 CDN 的广泛应用在企业客户,但是很多甲方的运维或者工程师对 CDN 的调度以及 DNS 的调度原理并不清楚,基本遇到问题也无法判断到底是否问题在 CDN 。甚至用户自己的使用规范不对也会埋怨是 CDN 的问题。今天简单根据几个案例聊下所谓 “调度不准” 的一系列疑问。 ## 购买 CDN 加速服务后的解析流程 先了解几个概念,我们在通过一张
1894 0
简谈 CDN “调度异常” 导致的系列问题
|
存储 SQL 分布式计算
ClickHouse深度揭秘
ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域。目前国内社区火热,各个大厂纷纷跟进大规模使用
8560 1
|
关系型数据库 测试技术 PostgreSQL
|
SQL 存储 分布式计算
大数据平台解决方案,Hadoop + HDFS+Hive+Hbase大数据开发整体架构设计
HDFS:分布式、高度容错性文件系统,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用,大规模的波若大数据平台(BR-odp)用户部署上1000台的HDFS集群。
4891 0