本文基于注解的配置,敬请留意  基于注解整合

一。springmvc为我们提供两种上传方式配置:

  1. org.springframework.web.multipart.commons.CommonsMultipartResolver (基于commons-fileupload.jar)
  2. 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上传文件方法及注意事项的更多相关文章

  1. springmvc上传文件,抄别人的

    SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是 ...

  2. 2. SpringMVC 上传文件操作

    1.创建java web项目:SpringMVCUploadDownFile 2.在项目的WebRoot下的WEB-INF的lib包下添加如下jar文件 com.springsource.com.mc ...

  3. SpringMVC上传文件总结

    如果是maven项目 需要在pom.xml文件里面引入下面两个jar包 <dependency> <groupId>commons-fileupload</groupId ...

  4. SpringMVC 上传文件 MultipartFile 转为 File

    在使用 SpringMVC 上传文件时,接收到的文件格式为 MultipartFile,但是在很多场景下使用都需要File格式的文件,记录下以便日后使用. 以下mFile为MultipartFile文 ...

  5. Java ftp上传文件方法效率对比

    Java ftp上传文件方法效率对比 一.功能简介: txt文件采用ftp方式从windows传输到Linux系统: 二.ftp实现方法 (1)方法一:采用二进制流传输,设置缓冲区,速度快,50M的t ...

  6. 使用springMVC上传文件

    control层实现功能: @RequestMapping(value="upload2") public String upLoad2(HttpServletRequest re ...

  7. 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 ...

  8. SpringMVC上传文件(图片)并保存到本地

    SpringMVC上传文件(图片)并保存到本地 小记一波~ 基本的MVC配置就不展示了,这里给出核心代码 在spring-mvc的配置文件中写入如下配置 <bean id="multi ...

  9. springmvc 上传文件时的错误

    使用springmvc上传文件一直失败,文件参数一直为null, 原来是配置文件没写成功. <bean id="multipartResolver" class=" ...

随机推荐

  1. 最短路算法模板SPFA、disjkstra、Floyd

    朴素SPFA(链表建边) #include <iostream> #include <cstdio> #include <cstring> #include < ...

  2. nyoj 对决吃桃

    时间限制:3000 ms  |  内存限制:65535 KB 难度:0   描述 有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一个,第二天照此方法,吃掉剩下桃子的一半又多一个,天天如此,到第m天早 ...

  3. JAVA_SE基础——59.权限访问修饰符

    了解了包的概念,就可以系统的介绍Java中的访问控制级别.在Java中,针对类.成员方法和属性提供了四种访问级别,分别是private.default.protected和public. 权限访问修饰 ...

  4. JAVA_SE基础——37.main方法的详解

    主函数 大家都会写吧. 大家一直都不知道为何这样设计,这样设计有什么好处呢? 白话解释: main函数的修饰符是public: 公共的 为何不用private 等等的修饰符 而规定只用public呢? ...

  5. ssl双向认证

    ssl双向认证 一.背景知识 1.名词解释 ca.key: 根证书的私钥 , ca.crt: 根证书的签名证书 server.key, server.crt client.key, client.cr ...

  6. redis入门(15)redis的数据备份和恢复

    redis入门(15)redis的数据备份和恢复

  7. HTTP协议扫盲(四)HTTP协议进阶 - MIME类型

    一.概念和原理 1.什么是MIME类型? MIME类型,即多用途互联网邮件扩展,它是一个互联网标准,在1992年最早应用于电子邮件系统,但后来也应用到浏览器. 服务器会将它们发送的多媒体数据的类型告诉 ...

  8. redis入门(01)redis的下载和安装

    参考链接: 命令手册 : http://www.redis.net.cn/order/ 菜鸟教程: http://www.runoob.com/redis/redis-install.html 一.概 ...

  9. Java设计模式(八)Proxy代理模式

    一.场景描述 代理在生活中并不少见,租房子需要找中介,打官司需要找律师,很多事情我们需要找专业人士代理我们做,另一方面,中介和律师也代理了房东.法律程序与我们打交道. 当然,设计模式中的代理与广义的代 ...

  10. 量化框架zipline--分钟回测改写

    转自:http://www.cnblogs.com/dxf813/p/7845398.html 基于zipline的分钟回测改写,其中数据源为自定义,使用bcolz的ctable,该数据格式与pand ...