踩坑の SpringMVC文件上传
环境准备
添加两个jar包
commons-fileupload-1.2.2.jar
commons-io-2.4.jar
配置要求
在springmvc.xml中配置multipart类型解析器
<!-- 文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为5MB -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
前台表单
<form name="form" action="${ctx}/user/upload.action" enctype="multipart/form-data" method="post">
<input type="text" name="username" value="${user.username}" >
<input type="text" name="password" value="${user.password}" >
<input type="file" name="file">
</form>
细节:一定要记得加上enctype属性
后台接收
- 方法一
简单粗暴,SpringMVC会直接帮你封装到对应对象中
@RequestMapping(value="/upload", method=RequestMethod.POST)
public String upload(User user, MultipartFile file){
System.out.println(file.getOriginalFilename());
//此处省略一万字...
}
- 方法二
也可以直接操作原始的请求和响应
@RequestMapping(value="/upload", method=RequestMethod.POST)
public String upload(HttpServletRequest request, HttpServletResponse response){
MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
MultipartFile mFile = mRequest.getFile("file");
System.out.println(mFile.getOriginalFilename());
//获取普通参数
String username = mRequest.getParameter("username");
//此处省略一万字...
}
那么问题来了
这么简单明了的代码,我竟然上传时进不来后台,前台能够成功响应到对应地址,但确是空白页面!说实话工作时有第一种方法谁还这么闲情逸致专门去用第二种方法实现,又是一个几分钟的事情搞了我几个小时。表示再次怀疑自己浏览器还是编译器的问题,还是问问领导好了= =。看了几眼,的确不是代码的错(松了一口气,要不脸都丢光了哈哈哈)看来看去我自己也有点感觉了,项目配置的问题!业界大佬看到这里多半会心一笑(如果有的话啊哈哈哈),这么简单的问题还需要想的吗?咳咳,我也觉得,小白不是好称呼,要努力摆脱才行你说是吧。哦对了,之所以值得一提,因为我不上传文件时还有上传jpg时完全没毛病,就当作是掩饰自己是码畜的借口吧,一到上传apk就挂了,蒙蔽了双眼。这不后来,领导搜索对应文件的速度不是能比的,眨眼工夫就点开了文件的拦截器,实在惭愧,debug一下,改个配置文件,程序贼溜了起来,Σ( ° △ °|||)︴
总结
废话这么多,只是想记录一下踩过的坑,说不上以后忘得一干二净,起码回头想起来有东西查,不至于重头翻他人记录,说实话找资料挺烦,多半人实际内容差不多,只是可能吧,有些博主尚未尝试过就转载或是复制粘贴,有点反感,还是看过不少没营养的博文的=_=,还是以后看自己的算了啊哈哈哈
踩坑の SpringMVC文件上传的更多相关文章
- SpringBoot1.x升级SpringBoot2.x踩坑之文件上传大小限制
SpringBoot1.x升级SpringBoot2.x踩坑之文件上传大小限制 前言 LZ最近升级SpringBoo框架到2.1.6,踩了一些坑,这里介绍的是文件上传大小限制. 升级前 #文件上传配置 ...
- springMVC文件上传大小超过限制的问题
[转自]https://my.oschina.net/ironwill/blog/646762 springMVC是一个非常方便的web层框架,我们使用它的文件上传也非常的方便. 我们通过下面的配置来 ...
- SpringMVC文件上传 Excle文件 Poi解析 验证 去重 并批量导入 MYSQL数据库
SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库 /** * 业务需求说明: * 1 批量导入成员 并且 自主创建账号 * 2 校验数据格式 且 重复导入提示 已被 ...
- springmvc文件上传下载简单实现案例(ssm框架使用)
springmvc文件上传下载实现起来非常简单,此springmvc上传下载案例适合已经搭建好的ssm框架(spring+springmvc+mybatis)使用,ssm框架项目的搭建我相信你们已经搭 ...
- 解决springMVC文件上传报错: The current request is not a multipart request
转自:https://blog.csdn.net/HaHa_Sir/article/details/79131607 解决springMVC文件上传报错: The current request is ...
- 18 SpringMVC 文件上传和异常处理
1.文件上传的必要前提 (1)form 表单的 enctype 取值必须是:multipart/form-data(默认值是:application/x-www-form-urlencoded) en ...
- springmvc文件上传AND jwt身份验证
SpringMVC文件上传 思路:1.首先定义页面,定义多功能表单(enctype=“multipart/form-data”)2.在Controller里面定义一个方法,用参数(MultipartF ...
- TZ_06_SpringMVC_传统文件上传和SpringMVC文件上传方式
1.传统文件上传方式 <!-- 文件上传需要的jar --> <dependency> <groupId>commons-fileupload</groupI ...
- SpringMVC文件上传下载(单文件、多文件)
前言 大家好,我是bigsai,今天我们学习Springmvc的文件上传下载. 文件上传和下载是互联网web应用非常重要的组成部分,它是信息交互传输的重要渠道之一.你可能经常在网页上传下载文件,你可能 ...
随机推荐
- Asp.net中Request.Url的各个属性对应的意义介绍
Asp.net中Request.Url的各个属性对应的意义介绍 本文转载自 http://www.jb51.net/article/30254.htm 网络上关于Request.Url的说明已经很多也 ...
- JavaScript数据迭代方法差别
js有很多总接待方法,ES6之后又新增了几个: 这里主要讨论数组迭代遍历的方法所以不会细讲for...in... ES5.ES6数组迭代方法有: forEach map filter some eve ...
- Java经典编程题50道之三十四
输入3个数a,b,c,按大小顺序输出. public class Example34 { public static void main(String[] args) { sort ...
- web2 - JavaScript
JavaScript 知识要点 参考教材一 参考教材二 参考教材三 1.JavaScript 和 Java 的关系? 2.JavaScript 在编程中可以做什么? 3.如何在 html 中使用 Ja ...
- 又是一个愚蠢的错误,皆因.xml而起
论java中的.xml到底有多坑?! 感觉自己都快哭了,再一次被.xml给坑了一下,这次坑的太狠了,一下子导致自己浪费了昨天一下午,一晚上,今天一上午和半个下午呀,中间的过程真的是乏善可陈呀,各 ...
- sonar + jacoco + mockMvc 模拟session 用户登录 配合SpringSecurity 权限 快速测试代码覆盖率.
遇到mock 测试简直就是神器,特别是要做代码覆盖率,直接测试controller就好了,缺点,虽然可以回滚事务,但是依赖数据库数据,解决,根据SpringBoot ,再建立一个专门跑单元测试的数据库 ...
- Python接口自动化测试 HTTP协议
一.HTTP协议简述 二.URL 三.请求 四.响应 五.消息报头 六.常见问题
- dd命令的巧妙使用
dd是一个非常使用高效的命令,他的作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 一.备份 备份整个磁盘到磁盘 #将sdx整盘备份到sdy中去 dd if=/dev/sdx of=/ ...
- android DecorView深入理解
开发中,通常都是在onCreate()中调用setContentView(R.layout.custom_layout)来实现想要的页面布局.页面都是依附在窗口之上的,而DecorView即是窗口最顶 ...
- directdraw显示yuv422(yuy2)
#include <mmsystem.h> void CshowpicDlg::OnBnClickedButton3() { // TODO: 在此添加控件通知处理程序代码 height ...