Spring---处理multipart形式的数据

Spring MVC文件上传 基于commons-fileupload组件,并在该组件上做了进一步的封装,简化了文件上传的代码实现,取消了不同上传组件上的编程差异。 阅读详情

参考:-SpringMVC处理Multipart数据

目录

 

1.Multipart介绍

1.1 Multipart形式的数据

2.SpringMVC处理Multipart数据

2.1 配置Multipart解析器

一.使用CommonsMultipartResolver解析器

二.使用StandardServletMultipartResolver解析器

2.2 处理multipart请求


1.Multipart介绍

1.1 Multipart形式的数据

Multipart格式数据会将一个表单拆分为多个部分(part)--通过content-type中指定的分割符,每个部分对应一个输入域。在一般的表单输入域中,它对应的部分会放置文本型数据,如果是文件上传形式,它对应的部分可以是二进制。
1.2 Multipart/form-data请求方式
Multipart/form-data是建立在HTTP的POST请求方式以上的请求,其一般用于HTTP文件上传。
所以我们需要在表单(form)元素中如下设置,使得该表单请求用于处理文件:

<form class="" action="" method="post" enctype="multipart/form-data">

参考:什么是multipart/form-data请求

2.SpringMVC处理Multipart数据

2.1 配置Multipart解析器

DispatcherServlet没有实现解析multipart请求数据的功能。它将任务委托给Spring中MutipartResolver策略接口实现,通过这个实现类来解析multipart请求中的内容。Spring3.1后内置两个MultipartResolver的实现供我们选择:

  • CommonsMultipartResolver: 使用Jakarta Commons FileUpload解析multipart请求。

  • StandardServletMultipartResolver: 依赖于Servlet3.0对multipart请求的支持。

一.使用CommonsMultipartResolver解析器

因为CommonsMultipartResolver依赖于Apache Commons FileUpload,所以我们需要引入commons-fileupload

<dependency>
     <groupId>commons-fileupload</groupId>
     <artifactId>commons-fileupload</artifactId>
     <version>1.3.1</version>
</dependency>

在SpringMVC配置文件中装载Bean即可,通过注入相关属性设置参数。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="defaultEncoding" value="utf-8" /> 
    <property name="maxUploadSize" value="1024000" />
    <property name="maxInMemorySize" value="204800" />
    <property name="uploadTempDir" value="/" />
</bean>

相关属性说明

属性名说明
defaultEncoding默认的解析编码,默认为iso-8859-1
maxUploaadSize上传文件的最大大小,默认为-1(无限制)
maxInMemorySize内存缓冲区大小,超过时写入硬盘,默认为-1(无限制)
uploadTempDir 临时文件目录,默认是serlvet容器的临时目录

二.使用StandardServletMultipartResolver解析器

在SpringMVC配置文件中装载Bean

<bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
因为StandardServletMultipartResolver解析使用Servlet的处理Multipart方法处理,所以我们需要在web.xml中设置DispatcherServlet时设置相关属性
<servlet>
    <servlet-name>useSpringMVC-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/spring-*.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <multipart-config>
        <location>/</location>
        <max-file-size>102400</max-file-size>
        <max-request-size>204800</max-request-size>
        </multipart-config>
</servlet>

相关属性说明

属性名说明
location上传文件所存放的临时目录。必须指定
max-file-size文件的最大大小,单位为字节。默认没有限制
max-request-size请求的最大大小,单位为字节。默认没有限制)
file-size-threshold 文件大小阈值,当大于这个阈值时将写入到磁盘,否则在内存中。默认值为0

2.2 处理multipart请求

一.Spring提供了MutilpartFile接口处理Mutilpart数据。接口API如下:

public interface MultipartFile {
    /**
    * 返回表单中mutilpart数据的名字
    */
    String getName();
    /**
    * 返回该文件名
    */
    String getOriginalFilename();
    
    boolean isEmpty();
    byte[] getBytes() throws IOException;
    
    InputStream getInputStream() throws IOException;
    /**
    * 把MultipartFile接口对象转换为File对象
    */
    void transferTo(File dest) throws IOException, IllegalStateException;
}

二.控制器处理multipart请求

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet"
    href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">
<title>File Upload</title>
</head>
<body>
    <div class="container">
        <div style="padding-top: 200px"></div>
        <div class="row">
            <div class="col-md-4"></div>
            <div class="col-md-5">
                <div class="panel panel-default" >
                    <div class="panel-heading text-center">
                        <h2>文件上传</h2> 
                    </div>
                    <div class="panel-body">
                        <form class="form-horizontal" role="form" action="/springMVC/upload" method="post" enctype="multipart/form-data">
                            <div class="form-group">
                                <label class="col-sm-3 text-center">文 件</label>
                                <div class="col-sm-7">
                                    <input type="file" id="exampleInputFile" name="file">
                                </div>
                                <div class="col-sm-2"></div>
                            </div>
                            <div class="form-group">
                                <div class="col-sm-12" style="padding-top:10px">
                                    <button type="submit" class="btn btn-primary col-sm-12">上 传</button>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
            <div class="col-md-3"></div>
        </div>
    </div>
    <script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>
    <script src="http://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
</body>
</html>

controller代码

@RequestMapping(value="/upload", method=RequestMethod.POST)
public String fileUpload(@RequestPart(value="file") MultipartFile multipartFile){
    //处理逻辑
    String path = "E:/java/fileupload/" + file.getOriginalFilename();
    multipartFile.transferTo(new File(path));    
}

三.多文件上传
多文件上传只需要把html代码中的< input name=".." >name属性设置为一样的就好。然后在controller中使用MultipartFile数组接受就行。

@RequestMapping(value="/upload", method=RequestMethod.POST)
public String fileUpload(@RequestPart(value="file") MultipartFile[] multipartFiles){
     //处理逻辑
 }

 

Spring中的 MultipartFile MulitpartFile 接口时Spring框架提供的一个用于处理文件上传的工具, 在SpringMVC和SpringBoot中, 它允许用户将文件作为请求的一部分上传 阅读详情

相关推荐

SpringMVC入门之九:multipart文件上传

处理Multipart形式的数据SpringMVC以multipart形式来上传文件。在编写控制器方法处理文件上传之前,我们必须要配置一个multipart解析器,通过它来告诉DispatcherServlet该如何读取multipart。配置multipart解析器DispatcherServlet并没有实现任何解析multipart请求数据的功能。它将该任务委托给了Spring中Multipar

zhoucheng05_13的博客 4169

Http之Multipart介绍

文章目录1. 什么是`Multipart`2.包含的对象1) `multipart/form-data`2) `multipart/byteranges` 1. 什么是Multipart Multipart:多部分对象集合。可以容纳多份类型的数据。 看不懂?没关系,看完例子就懂了 2.包含的对象 multipart/form-data 哎呀,这个我熟,传文件必写的。以前只是知道怎么用,却不知道为什么要这么用。看完这篇文章你就懂了 multipart/byteranges 1) multipart/for

黑夜 1万+

基于Spring Boot框架的网上蛋糕销售系统

随着互联网的普及和电子商务的迅猛发展,网上购物已经成为人们日常生活的一部分。蛋糕作为一种受欢迎的食品,其销售市场也逐渐向网络化方向发展。网上蛋糕销售系统能够打破时间和地域的限制,让消费者随时随地浏览和购买蛋糕,同时也为蛋糕商家提供了一个展示和销售产品的平台。该系统的开发旨在提高蛋糕预定和销售的便捷性,节约时间和经济成本,并推动蛋糕市场的进一步发展。开发语言:Java,一种面向对象的编程语言,具有跨平台性、稳定性和安全性等特点,适用于构建大型、复杂的Web应用程序。 框架:Spring Boot,一个基于Sp

2301_81127431的博客 997

理解 HTTP Multipart:入门介绍

MIME 类型分为两类,离散类型和 multipart 类型。离散类型包含一个文档。例如(二进制),image/text/等。Multipart 类型是包含多个部分的文档,这些部分可以有自己的 MIME 类型。有两种 multipart 类型:message/ 和 multipart/ -- 是的,multipart 既是一个类型又是一个类有点混淆。message/类型基本上不再用于任何事情,但multipart/仍然非常重要。你经常看到用于通过 HTML 表单从 Web 浏览器发送文件到服务器。

3083

R以及Rstudio超详细安装教程(包括安装过程中出现的问题)

R安装及Rstudio安装,以及安装中出现的问题

2301_76908257的博客 1万+

安装keil5(MDK)及导入pack包教程

首先说明的是我安装的Keil版本为Keil V5.29.0.0 1、安装软件 右键管理员权限运行安装包 设置安装路径以及pack的存放路径 随意输入First Name和E-mail 安装驱动 完成软件安装,然后可以先关闭弹出的Pack Install(一会再添加) 2、激活一下软件 打开桌面的Keil File → License Management(我之前注册过了) 右...

hrx-@@ 10万+

Spring处理multipart形式的数据

处理multipart形式的数据 在处理文件上传之前,我们需要配置multipart解析器 配置multipart解析器 从Spring3.1开始,Spring提供了2个解析器。 CommonsMultipartResolver StandardServletMultipartResolver:基于Servlet3.0容器。(始于Spring3.1) 通常,使用StandardServletMultipartResolver是优选的方案,但是如果使用servlet3.0之前的Servlet容器,或者使用

csdnyq的博客 1615

向NCBI上传16S rDNA数据的操作详解

专门介绍向NCBI上传16S rDNA数据的方法不太多。因为自己有上传数据的需要,所以决定边摸索边写下操作流程。如果这篇博文交代了上传步骤以及一些描述文件属性的书写,帮到你的话,还请点赞收藏。

yue81560的博客 2万+

Spring MVC 处理 multipart 形式的数据

multipart格式的数据会将一个表单拆分成为多个部分,每个部分对应一个输入域 1. 配置multipart解析器 Spring中通过MultipartResolver接口的实现类来解析multipart请求中的内容,从Spring3.1开始,Spring内置了两个它的实现类: CommonsMultipartResolver:使用Jakarta Comomons FileUpload 解析m...

sakuragio的博客 349

uniapp中使用canvas生成海报,并下载保存到手机相册

如下图,是在H5中,canvas生成后的效果,首先说明,H5不支持返回图片的临时路径,不能用于保存,APP端生成成功后,会返回图片的临时路径用来保存到相册。本地测试,用的网络图片,没有出现跨域的问题,APP端也正常显示。 完整代码:可以将整个代码复制到你得uniapp项目中直接运行。代码中做了详细的注册,关于API的用法,这里只标注的简单的提示,具体还是参考 官方链接uniapp-canvas吧 <template> <view class="demo"> <c.

sunluyi的博客 3万+

基于STM32的蓝牙智能药盒设计

本研究设计了一种基于STM32F103C8T6单片机的蓝牙智能药盒系统,针对老年人用药管理需求,集成了定时提醒、药量检测、环境监测等功能。系统通过LCD1602显示屏实时显示时间与用药信息,支持每日3次定时提醒及3种药物用量设置,采用DHT11温湿度传感器、HX711药量检测模块和红外传感器实现环境监控,并通过蓝牙模块实现远程用药提醒。测试结果表明,系统定时误差≤30秒,温湿度监测精度±2℃,药量检测误差<1g,各项功能运行稳定。该设计为解决老年人用药依从性问题提供了智能化解决方案,具有实用价值和应用前景。

3254968421的博客 543

笔记34 Spring MVC的高级技术——处理multipart形式的数据

笔记34 Spring MVC的高级技术——处理multipart形式的数据 一、需求介绍: Spittr应用在两个地方需要文件上传。当新用户注册应用的时候,我 们希望他们能够上传一张图片,从而与他们的个人信息相关联。当用 户提交新的Spittle时,除了文本消息以外,他们可能还会上传一 张照片。 二、multipart介绍 一般表单提交所形成的请...

qq_33317402的博客 157

C#函数返回多个值实现实例

本文实例讲解C#函数返回多个值多种实现方法。

qq_30725967的博客 1170

Spring MVC高级技术--处理multipart形式的数据

处理multipart形式的数据 ⽂件上传 原⽣servlet处理上传的⽂件数据的, springmvc⼜是对serlvet的封装 所需jar包: <!--⽂件上传所需jar坐标--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</vers

路人贾的博客 304

高通平台开发系列讲解(系统篇)系统关机流程

📢本篇章主要图解高通平台系统关机流程。

内核笔记 3212

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Spring MVC 高级技术 - multipart数据处理

文章目录配置multipart解析器StandardServletMultipartResolverCommonsMultipartResolver处理multipart请求原始byte[]形式MultipartFile形式以part形式接收上传的文件 multipart格式数据会将一个表单拆分为多个部分,每个部分对应一个输入域 配置multipart解析器 Spring内置multipart...

yzy199391的博客 913

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

spring mvc源码-》MultipartReques类-》主要是对文件上传进行的处理,在上传文件时,编码格式为enctype="multipart/form-data"格式,以二进制形式提交数据...

spring mvc源码-》MultipartReques类-》 MultipartReques类主要是对文件上传进行的处理,在上传文件时,编码格式为enctype="multipart/form-data"格式,以二进制形式提交数据,提交方式为post方式。 ...

weixin_34400525的博客 118

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Spring MVC 的高级技术

一、处理 multipart 形式的数据 1、配置multipart解析器 Spring内置的两个解析器: CommonsMultipartResolver :使用Jakarta Commons FileUpload 解析 StandardServletMultipartResolver :依赖于Servlet 3.0 对multipart请求的支持(始于Spring 3.1) 配置 Stan...

pengxs1的博客 337

Spring初入配置~十四

前一篇我们简单的说了下用其他的方式来创建SprignMVC,我们这一篇说下怎么处理multipart形式的数据。 我们通常在表单提交中处理数据一般都是通过&这个字符来进行组合。但是这种方式就不符合我们去进行二进制数据的传输了。而multipart它呢就将数据拆分成很多小部分,每个部分都对应的一个输入域,输入域一般对应的是文本型数据,但是在这里会处理的是二进制数据。 在这部分中我们可以看到name

fengruiqi的博客 468

《 Spring in action》复习笔记 - 第七章 Spring MVC 的高级技术

处理 multipart 形式的数据 配置 multipart 解析器 DispatcherServlet 没有实现任何解析 multipart 请求数据的功能。它将该任务委托给了 MultipartResolver 策略借口的实现。Spring 内置了两个 MultipartResolver 的实现供我们选择: CommonsMultipartResolver : 使用 Jakarta Com...

努力奋斗 365

《Spring实战》读书笔记-第7章 Spring MVC的高级技术

光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性。

H1767410的博客 683

《Spring实战》读书笔记-第7章 Spring MVC的高级技术(1)

对于面试,一定要有良好的心态,这位小伙伴面试美团的时候没有被前面阿里的面试影响到,发挥也很正常,也就能顺利拿下美团的offer。小编还整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家,也祝愿大家都能够升职加薪!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

VIP129370的博客 1076

springmvc 上传文件大小配置_Spring实战读书笔记第7章 Spring MVC的高级技术

本章内容:Spring MVC配置的替代方案处理文件上传在控制器中处理异常使用flash属性7.1 Spring MVC配置的替代方案自定义DispatcherServlet配置除了我们之前在SpitterWebAppInitializer中所编写的三个方法仅仅是必须要重载的abstract方法,AbstractAnnotationConfigDispatcherServletIniti...

weixin_34664586的博客 358
上一篇: HTTP---Post提交数据的几种类型
下一篇: Spring---处理异常
zhangpower1993
博客等级 码龄11年 100粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值