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=" ...
随机推荐
- Python内置函数(62)——exec
英文文档: exec(object[, globals[, locals]]) This function supports dynamic execution of Python code. obj ...
- ### Cause: org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [arg1, arg0, param1, param2]
org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: org.apache.ib ...
- mosquitto安装和测试
一.安装 1.windows安装 安装完毕,更新安装目录的dll文件 2.linux安装 编译保存用户数据到数据库的插件 安装 3.启动 mosquitto mosquitto mosquitto_p ...
- 新概念英语(1-99)Ow!
Lesson 99 Owl! 啊哟! Listen to the tape then answer this question. Must Andy go to see the doctor?听录音, ...
- ELK学习总结(2-3)Mget获取多个文档
mget 获取多个文档 1.curl 命令格式:mget获取多个文档: curl 'localhost:9200/_mget' -d '{ "docs":[ { " ...
- Spring Security 入门(1-8)Spring Security 的配置文件举例
- Python入门之函数的装饰器
本章目录: 装饰器: 一.为什么要用装饰器 二.什么是装饰器 三.无参装饰器 四.装饰器语法糖 五.认证装饰器实现 六.叠加多个装饰器 七.带参装饰器 ======================== ...
- 【转】cookielib模块
cookielib模块 cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.例如可以利用本模块 的CookieJar类的对象来 ...
- hue集成hbase出现TSocket read 0 bytes
解决办法:修改hbase的配置文件 添加以下配置 https://stackoverflow.com/questions/20415493/api-error-tsocket-read-0-bytes ...
- Maven 本地仓库明明有jar包,pom文件还是报错解决办法
方法一: 找到出错的jar包文件位置,删掉_maven.repositories文件 方法二: maven中的本地仓库的index索引没有更新导致 解决方案: 在eclipse中打开菜单 window ...