Spring mvc文件上传实现
Spring mvc文件上传实现
jsp页面客户端表单编写
三个要素:
1.表单项type=“file”
2.表单的提交方式:post
3.表单的enctype属性是多部分表单形式:enctype=“multipart/form-data”
会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表名文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。
3.1.当form表单修改为多部分表单时,request.getParameter()将失效。
3.2.enctype=“application/x-www-form-urlencoded”时,form表单的正文内容格式是:key=value&key=value&key=value
3.3.当form表单的enctype取值为Mutilpart/form-data时,请求正文内容就变成多部分形式:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/quick16" method="post" enctype="multipart/form-data">
名称:<input type="text" name="name"><br>
文件:<input type="file" name="uploadFile">
<input type="submit" value="点击提交">
</form>
</body>
</html>
需要导入的jar坐标
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
配置文件上传解析器
<bean id="commonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上传文件的编码类型-->
<property name="defaultEncoding" value="utf-8"></property>
<!--上传单个文件的大小-->
<property name="maxUploadSizePerFile" value="50000000"></property>
<!--上传文件的总大小-->
<property name="maxUploadSize" value="54288600"></property>
</bean>
编写文件上传代码
@RequestMapping(value = "/quick17")
/* 告诉SpringMvc框架,方法返回的字符串不是跳转是直接在http响应体中返回*/
@ResponseBody
public void save17(String username, MultipartFile uploadFile) throws IOException {
/*获取原始文件名*/
String originalFilename = uploadFile.getOriginalFilename();
/*保存到服务器上这里是本地*/
uploadFile.transferTo(new File("F:\\upload\\"+originalFilename));
}
上传多个文件
jsp表单代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/quick18" method="post"
enctype="multipart/form-data">
名称:<input type="text" name="name"><br>
文件1:<input type="file" name="uploadFiles">
文件2: <input type="file" name="uploadFiles">
<input type="submit" value="点击提交">
</form>
</body>
</html>
服务器端代码
@RequestMapping(value = "/quick18")
/* 告诉SpringMvc框架,方法返回的字符串不是跳转是直接在http响应体中返回*/
@ResponseBody
public void save18(String username, MultipartFile[] uploadFiles) throws IOException {
for (MultipartFile uploadFile : uploadFiles) {
/*获取原始文件名*/
String originalFilename = uploadFile.getOriginalFilename();
/*保存到服务器上这里是本地*/
uploadFile.transferTo(new File("F:\\upload\\"+originalFilename));
}
}

成功保存到本地

以上就是SpringMVC系列的第三章,主要侧重SpringMVC上传文件的操作,我后续会持续更新Springmvc系列课程,本博客主要侧重于数据结构于算法和java开发,觉得我的文章有帮助的小伙伴可以关注我,有疑问可评论私信,相逢即是缘,大家高处见

Spring mvc文件上传实现的更多相关文章
- Spring MVC 笔记 —— Spring MVC 文件上传
文件上传 配置MultipartResolver <bean id="multipartResolver" class="org.springframework.w ...
- Spring MVC文件上传教程 commons-io/commons-uploadfile
Spring MVC文件上传教程 commons-io/commons-uploadfile 用到的依赖jar包: commons-fileupload 1.3.1 commons-io 2.4 基于 ...
- 【Java Web开发学习】Spring MVC文件上传
[Java Web开发学习]Spring MVC文件上传 转载:https://www.cnblogs.com/yangchongxing/p/9290489.html 文件上传有两种实现方式,都比较 ...
- Spring mvc 文件上传到文件夹(转载+心得)
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...
- spring mvc 文件上传 ajax 异步上传
异常代码: 1.the request doesn't contain a multipart/form-data or multipart/mixed stream, content type he ...
- spring mvc文件上传(单个文件上传|多个文件上传)
单个文件上传spring mvc 实现文件上传需要引入两个必须的jar包 1.所需jar包: commons-fileupload-1.3.1.jar ...
- Strut2 和Spring MVC 文件上传对比
在Java领域中,有两个常用的文件上传项目:一个是Apache组织Jakarta的Common-FileUpload组件 (http://commons.apache.org/proper/commo ...
- Spring MVC 文件上传 & 文件下载
索引: 开源Spring解决方案--lm.solution 参看代码 GitHub: pom.xml WebConfig.java index.jsp upload.jsp FileUploadCon ...
- 【Spring】Spring MVC文件上传--整合bootstrap-fileinput和jQuery-File-Upload
前言 这里分享两个使用Spring MVC进行文件上传的简单示例, 分别整合bootstrap-fileinput 和 Jquery File Upload , 代码十分简单, 都是入门的示例,因此这 ...
随机推荐
- bind,call,apply模拟实现
首先,三者第一个参数都为this指向 区别 bind返回的是一个函数体 call和apply会直接执行,但是call参数需要一个一个进行传递,apply的第二个参数是一个数组 实现 bind 简单实现 ...
- Charles抓包工具的用途及应用
Charles抓包工具的用途: 排查问题,测试异常情况 注意:Charles不能直接抓https请求的包,需要用https://www.jianshu.com/p/ec0a38d9a8cf这个方法去配 ...
- pytest文档1-pytest+Allure+jenkins+邮箱发送
前言: 1.pytest+allure是目前很多公司使用较多的一种报告样式,因为它更详细,各种指标更直观(简单的说就是看着更高大上,更能装X). 环境准备: 1.Windows10 2.Allure ...
- spyder如何切换python虚拟环境?
2020/5/29 在anaconda下创建了很多个python虚拟环境,现在我想使用 spyder 运行python程序, 并且使用其中某一个虚拟环境,方法如下: 首先要知道 Anaconda自带的 ...
- 云计算openstack共享组件——时间同步服务ntp(2)
一.标准时间讲解 地球分为东西十二个区域,共计 24 个时区 格林威治作为全球标准时间即 (GMT 时间 ),东时区以格林威治时区进行加,而西时区则为减. 地球的轨道并非正圆,在加上自转速度逐年递减, ...
- (专题四)06 matlab绘图选项卡
绘图选项卡 例子1--选择已有变量,绘制图形 都是按照选中的先后顺序依次确定坐标, 如果要修改绘制图形 法一,利用绘图工具和停靠图形按钮 法二,命令行窗口中输入命令 >>plottools ...
- RPC概念和框架
RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想. RPC 是远程过程调用(Remote Procedur ...
- QQDIV失效补救
{"styleId":22,"bgId":3807,"cardId":3807,"renderInfo":{" ...
- Vue+Java+Base64实现条码解析
前端部分(Vue + Vant) 引入Vant.使用Vant中的Uploader组件上传文件(支持手机拍照) import Vue from 'vue'; import { Uploader } fr ...
- Redis5设计与源码分析读后感(四)压缩列表
一.引言 上一节我们总结了跳跃表的知识,我们知道了有序数组可以用跳跃表实现,也可以用压缩列表来实现,这一篇文章我们来总结一下压缩列表相关的知识. 二.压缩列表简介 定义:压缩列表 ziplist 本质 ...