在SpringMVC中上传文件是比较方便的。主要分为以下几个步骤:

1)在applicationContext.xml中增加相应类的引用

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10"></property>
<property name="maxInMemorySize" value="2103296"></property>
</bean>

这里有一点需要注意,bean中的id必须为"multipartResolver",不能用其它的名字。否则会出现java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured 这种异常。

2)在对应的Action类中直接使用MultipartFile类(org.springframework.web.multipart.MultipartFile)接收前台页面上传的文件。

    @RequestMapping("saveFile")
public ModelAndView saveFile(MultipartFile photo )
{
String contentType = photo.getContentType();
String size = String.valueOf(photo.getSize());
boolean isEmpty = photo.isEmpty(); ModelAndView modelAndView = new ModelAndView("/message/show");
modelAndView.addObject("size", size);
modelAndView.addObject("isEmtpy",isEmpty);
modelAndView.addObject("contentType",contentType);
return modelAndView;
}

MultipartFile是CommonsMultipartResolver的父接口。这里有个tips,例子中用于接收文件的变量photo,必须与前端页面的file标签的name属性同名才行。

随机推荐

  1. crontab执行shell脚本

    */5 * * * * cd /data/**/ && ./*.sh * * * * * /bin/sh /home/*.sh

  2. 关于VS2012下安装破解文件Visual Assit X的一点说明

    今天在使用Visual Studio 2012的时候,编写代码的助手Visual Assit X突然提示我说,试用期已过,要求我输入一个注册码,我靠,这货不是几个月前已经破解了吗,怎么今天傻不愣登的提 ...

  3. EF6 在原有数据库中使用 CodeFirst 总复习(一、搭建基础环境)

    本来以为已经会了,可动手时发现许多问题还是模糊不清,正所谓眼高手低.只能重新查资料,再复习一遍. vs.net2013 ef6 mvc5 sqlserver2008   一.建立数据库  Bloggi ...

  4. github上所有项目的受欢迎程度排名,包括超大型项目

    直接打开如下网址: https://github.com/search?l=Java&q=+stars%3A%3E0&ref=searchresults&type=Reposi ...

  5. Codeforces Round #338 (Div. 2) B. Longtail Hedgehog dp

    B. Longtail Hedgehog 题目连接: http://www.codeforces.com/contest/615/problem/B Description This Christma ...

  6. 深入浅出Node.js (8) - 构建Web应用

    8.1 基础功能 8.1.1 请求方法 8.1.2 路径解析 8.1.3 查询字符串 8.1.4 Cookie 8.1.5 Session 8.1.6 缓存 8.1.7 Basic认证 8.2 数据上 ...

  7. 利用python的timeit库计算程序运行的时长

    from timeit from time import clock start = clock() # 此处填写需要运行的函数 end = clock() print(end - start)

  8. Android IPC机制(二)用Messenger进行进程间通信

    Messenger可以在不同进程中传递Message对象,我们在Message中加入我们想要传的数据就可以在进程间的进行数据传递了.Messenger是一种轻量级的IPC方案并对AIDL 进行了封装, ...

  9. 码农眼中的数学之~矩阵专栏(附Numpy讲解)

      2.矩阵专栏¶ 吐槽一下:矩阵本身不难,但是矩阵的写作太蛋疼了 (⊙﹏⊙)汗 还好有Numpy,不然真的崩溃了... LaTex有没有一个集成了很多常用公式以及推导或者含题库的在线编辑器? 代码裤 ...

  10. lr场景异常Continuing after Error -26479: Conversion of form submission data to the target charset failed: U_TRUNCATED_CHAR_FOUND解决方法

    在lr压测场景中执行,发现 一个事务都没有成功,很是奇怪,发现用linux的agent各种问题 查看lr运行日志 看到这里基本确定是编码的问题,然后想起lr设置编码的地方就那么几个,所以逐个尝试 改完 ...