springmvc上传文件方法及注意事项
本文基于注解的配置,敬请留意 基于注解整合
一。springmvc为我们提供两种上传方式配置:
- org.springframework.web.multipart.commons.CommonsMultipartResolver (基于commons-fileupload.jar)
- org.springframework.web.multipart.support.StandardServletMultipartResolver (基于servlet3.0+)
二。配置方式基于commons-fileupload.jar
1)在先前的类DispacherConfig里添加如下代码:
/**
* 此处注意bean的名字一定起名为multipartResolver
* @return
*/
@Bean
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
commonsMultipartResolver.setDefaultEncoding(propertyConfig.getUploadDefaultEncoding());
commonsMultipartResolver.setMaxUploadSize(1024 * 1024 * propertyConfig.getMaxUploadSize());//字节为单位
return commonsMultipartResolver;
}
注意bean的名字一定为:multipartResolver,贼恶心,曾经起别的名字死活报错
2)在先前的application.properties添加如下代码:
#注意以兆为单位
spring.web.max.upload.size=30
spring.web.fileupload.encoding=utf-8
3)更改propertyConfig类添加对应的属性:
@Value("${spring.web.max.upload.size}")
private Integer maxUploadSize;
@Value("${spring.web.fileupload.encoding}")
private String uploadDefaultEncoding="utf-8";
public String getUploadDefaultEncoding() {
return uploadDefaultEncoding;
}
public Integer getMaxUploadSize() {
return maxUploadSize;
}
三。配置方式基于servlet3.0+
此时我们需要在MyWebAppInitializer里重写 customizeRegistration 方法
/**
* servlet3.0+ 上传文件
* 单个文件最大5M
* 总请求最大20M
* @param registration
*/
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
String temp = System.getProperty("java.io.tmp");
MultipartConfigElement multipartConfigElement = new MultipartConfigElement(temp, 5242880, 20971520, 0);
registration.setMultipartConfig(multipartConfigElement);
}
在DispacherConfig里添加如下bean
@Bean
public MultipartResolver multipartResolver() {
StandardServletMultipartResolver standardServletMultipartResolver = new StandardServletMultipartResolver();
return standardServletMultipartResolver;
}
注意bean的名字一定为:multipartResolver
如果您想通过配置实现,则需在web.xml里配置代码:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<multipart-config>
<file-size-threshold>0</file-size-threshold>
<location>c:/tmp</location>
<max-file-size>2000000</max-file-size>
<max-request-size>40000000</max-request-size>
</multipart-config>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.form</url-pattern>
</servlet-mapping>
同样需要在spring-bean里的配置:
<bean id="multipartResolver"
class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
</bean>
四。在controller中实现文件上传
创建控制器UploadController并写相关上传代码:
@PostMapping("/upload")
public String upload(@RequestParam(name = "file")MultipartFile file) throws IOException {
System.out.println(file.getOriginalFilename());//获取文件名
FilenameUtils.getExtension(file.getOriginalFilename());//获取文件类型
/*
省略拼接文件地址代码
。。。
*/
file.transferTo(new File("上传目标文件地址"));
return "uploadSuccess";
}
springmvc上传文件方法及注意事项的更多相关文章
- springmvc上传文件,抄别人的
SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是 ...
- 2. SpringMVC 上传文件操作
1.创建java web项目:SpringMVCUploadDownFile 2.在项目的WebRoot下的WEB-INF的lib包下添加如下jar文件 com.springsource.com.mc ...
- SpringMVC上传文件总结
如果是maven项目 需要在pom.xml文件里面引入下面两个jar包 <dependency> <groupId>commons-fileupload</groupId ...
- SpringMVC 上传文件 MultipartFile 转为 File
在使用 SpringMVC 上传文件时,接收到的文件格式为 MultipartFile,但是在很多场景下使用都需要File格式的文件,记录下以便日后使用. 以下mFile为MultipartFile文 ...
- Java ftp上传文件方法效率对比
Java ftp上传文件方法效率对比 一.功能简介: txt文件采用ftp方式从windows传输到Linux系统: 二.ftp实现方法 (1)方法一:采用二进制流传输,设置缓冲区,速度快,50M的t ...
- 使用springMVC上传文件
control层实现功能: @RequestMapping(value="upload2") public String upLoad2(HttpServletRequest re ...
- django上课笔记7-jQuery Ajax 和 原生Ajax-伪造的Ajax-三种Ajax上传文件方法-JSONP和CORS跨域资源共享
一.jQuery Ajax 和 原生Ajax from django.conf.urls import url from django.contrib import admin from app01 ...
- SpringMVC上传文件(图片)并保存到本地
SpringMVC上传文件(图片)并保存到本地 小记一波~ 基本的MVC配置就不展示了,这里给出核心代码 在spring-mvc的配置文件中写入如下配置 <bean id="multi ...
- springmvc 上传文件时的错误
使用springmvc上传文件一直失败,文件参数一直为null, 原来是配置文件没写成功. <bean id="multipartResolver" class=" ...
随机推荐
- 学大伟业 国庆Day2
期望得分:30+100+0=130 实际得分:30+100+20=150 忍者钩爪 (ninja.pas/c/cpp) [问题描述] 小Q是一名酷爱钩爪的忍者,最喜欢飞檐走壁的感觉,有一天小Q发现一个 ...
- html{font-size:62.5%}
为什么要使用html,body{font-size:62.5%}? 使用以下代码查看浏览器的初始font-size: <!DOCTYPE html><html><head ...
- ( 转 ) CORS 有一次 OPTIONS 请求的原理
刚接触前端的时候,以为HTTP的Request Method只有GET与POST两种,后来才了解到,原来还有HEAD.PUT.DELETE.OPTIONS-- 目前的工作中,HEAD.PUT.DELE ...
- 常用cmd代码片段及.net core打包脚本分享
bat基础命令 注释:rem 注释~~ 输出:echo hello world 接收用户输入:%1 %2,第n个变量就用%n表示 当前脚本路径:%~dp0 当前目录路径:%cd% 设置变量:set c ...
- 关于PHP7
目前一直使用php7也看了许多文档视频等,整理一下相关细节(仅为记录-),对于PHP7性能,如下图所示. * 在wordpress3.0.1中 php7比php5.6性能提升约3倍左右 新特性 一.变 ...
- Windows用户模式下注入方式总结
注入技术在病毒木马.游戏.打补丁等编程中应用很广泛,学习该技术不仅能帮助理解Windows工作原理,还能对病毒木马技术手段有更加深刻的理解,下面我们了解下各种注入方式吧. 一.DLL注入 在注入技术中 ...
- ActiveMQ学习系列(二)----生产者客户端(java)
上文主要简单地将activeMq搭建了起来,并且可以用web console去登录查看相关的后台功能. 本文将学习如何用java语言实现一个生产者客户端,主要参考了以下链接: http://activ ...
- 【第二十篇】C#微信H5支付 非微信内浏览器H5支付 浏览器微信支付
微信开发者文档 微信H5支付官方文档 请阅读清楚 最起码把所有参数看一遍 这个地方也可以看看 微信案例 http://wxpay.wxutil.com/mch/pay/h5.v2.php,请在微 ...
- pandas(七)数据规整化:清理、转换、合并、重塑之合并数据集
pandas对象中的数据可以通过一些内置的方式进行合并: pandas.merge 可根据一个或多个键将不同的DataFrame中的行连接起来. pandas.concat可以沿着一条轴将多个对象堆叠 ...
- js 常用数组和字符串方法
javascript数组与字符串常用方法总结 最近在梳理js的基础,首先从数组和字符串开始. string 常用方法: 1.substring(start开始位置的索引,end结束位置索引) 截取的位 ...