springmvc-文件上传(上传到本地)

这篇博客详细介绍了Spring MVC中文件上传的原理和实现步骤,包括multipart请求的解析,配置MultipartResolver,以及如何将文件上传到本地服务器。同时,文章还提及了elementui+vue+axios组合完成文件上传的前端实现。
摘要由CSDN通过智能技术生成

目录

文件上传的原理 

一、multipart请求

二、配置multipartResolver

1、文件上传到本地服务器

(1)文件上传的依赖

   (2)创建一个页面

    (3)在springmvc中配置文件上传解析器

(4)创建demo01接口方法

2、elementui+vue+axios完成文件上传

1.创建jsp页面

(2)后台的接口


 

文件上传的原理 

一、multipart请求

文件上传在底层其实就是前端form表单提交enctype="multipart/form-data"类型的数据。那么首先就来介绍一下multipart请求。
我们传统的from表单提交的都是文本类型的数据,比如注册表,当提交表单的时候,这些属性会key=value的形式拼接成字符串发送到后端

这种处理方式很简单也很有效,但是对于图片、视频等二进制数据就不能这么处理了,这里就要用到multipart表单了。multipart表单和上面介绍的普通表单不同,它会把表单分割成块,表单中的每个字段对应一个块,每个块都有自己的数据类型。也就是说,对于上传字段对应的块,它的数据类型就可以是二进制了:
虽然mutipart请求看起来比较复杂,但是在spring mvc中处理起来是非常简单的。在写我们处理上传文件的controller之前,我们得先配置一个Mutipart Resolver来告诉DispatchServlet如何解析一个mutipart 请求。

二、配置multipartResolver

实现文件上传,其实就是解析一个Mutipart请求。DispatchServlet自己并不负责去解析mutipart 请求,而是委托一个实现了MultipartResolver接口的类来解析mutipart请求。在Spring3.1之后Spring提供了两个现成的MultipartResolver接口的实现类:

CommonMutipartResolver:通过利用Jakarta Commons FileUpload来解析mutipart 请求
StandardServletMutipartResolver:依赖Servlet3.0来解析mutipart请求

 

mutipart-config里面有三个配置项:

location:上传文件用到的临时文件夹,是一个绝对路径,需要注意,这个属性是必填的
max-file-size:上传文件的最大值,单位是byte,默认没有限制
max-request-size:整个mutipart请求的最大值,单位是byte,默认没有限制

如果想使用Spring的文件上传功能,则需要在上下文中配置MultipartResolver。

前端表单要求:为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data。只有在这样的情况下,浏览器才会把用户选择的文件以二进制数据发送给服务器;

对表单中的 enctype 属性做个详细的说明:

  • application/x-www=form-urlencoded:默认方式,只处理表单域中的 value 属性值,采用这种编码方式的表单会将表单域中的值处理成 URL 编码方式。

  • multipart/form-data:这种编码方式会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数中,不会对字符编码。

  • text/plain:除了把空格转换为 "+" 号外,其他字符都不做编码处理,这种方式适用直接通过表单发送邮件。

文件上传:
1. 上传到本地服务器。
2. 通过ajax上传到本地服务器.
3. 通过elementui-vue上传到本地服务器。
4. 上传到阿里云OSS服务器。
5. 通过elementui-vue上传到阿里云oss服务器。

1、文件上传到本地服务器

(1)文件上传的依赖

 <depende
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值