springMVC中上传图片
上传图片,很常见的问题,基本每个人都会遇到,但是个人认为在springMVC中上传图片相对来说是比较简单的,因为框架已经帮我们做好了许多事情。
这篇文章所用的环境:spring4.3.3 、jdk1.8 、eclipse。
环境准备
如果项目中没有导入以下jar包请先导入,这里有:http://download.csdn.net/download/u011403655/8559545
commons-fileupload-1.2.2.jar
commons-io-2.4.jar
在springmvc.xml配置文件中配置插件
在springmvc.xml中加入这一个配置,可以配置文件上传的最大限制。
<!-- 文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
form中加入一个属性enctype="multipart/form-data"
<form action="${pageContext.request.contextPath}/addPet.action" method="post" enctype="multipart/form-data">
<input type="file" required="required" name="pic" id="exampleInputFile">
...
注意这里的input,name属性是pic,可以直接映射到controller方法的同名参数中。
controller中的方法
@RequestMapping("addPet.action")
public ModelAndView addPet(String name,
double price,
String introduce,
MultipartFile pic,
String classifyName)
throws IllegalStateException, IOException {
if (!pic.isEmpty()) {
String path = "E:\\宠物网站\\image\\";
String originalFileName = pic.getOriginalFilename();
// 新的图片名称
String newFileName = UUID.randomUUID() + originalFileName.substring(originalFileName.lastIndexOf("."));
// 新的图片
File newFile = new File(path + newFileName);
// 将内存中的数据写入磁盘
pic.transferTo(newFile);
}
这里的控制器中的方法参数是 MultipartFile pic,和表单元素中的name是一一对应的,新的文件命名用UUID生成字符串避免文件名重复,同时截取图片的后缀名;最后再把图片写到磁盘上去。到此,就完成了图片的上传。
图片在页面中的显示
web程序是在tomcat中运行的,但是这里的图片是放到了本地的磁盘上的,怎么通过tomcat访问到呢?这篇文章是eclipse,在eclipse中可以配置,双击打开tomcat:

选择modules--->Add Extenal Web Modules--->Document base (就是图片存放在磁盘上的绝对路径),path就是在tomcat中访问的路径,我这里用的是 /image,通过这样的配置,在tomcat中通过 localhost:8080/image/图片名称全称 就能访问到图片。

测试一下,在浏览器中如果通过上述url能访问到图片就说明配置成功。这样在jsp页面中的图片的路径就要写成 src="/image/图片全称"才能访问到图片,不能再加上项目名了。

其实上述的配置过程就是在tomcat中添加了一些配置,配置了一个虚拟目录,如果没有用eclipse,或者嫌eclipse手动配置麻烦,其实可以通过在server.xml中进行配置,在<Host></Host> 中间加入如下配置:
<Context docBase="E:\宠物网站\image" path="/image" reloadable="true"/>
springMVC中上传图片的更多相关文章
- (转)SpringMVC学习(九)——SpringMVC中实现文件上传
http://blog.csdn.net/yerenyuan_pku/article/details/72511975 这一篇博文主要来总结下SpringMVC中实现文件上传的步骤.但这里我只讲单个文 ...
- SpringMvc中的数据校验
SpringMvc中的数据校验 Hibernate校验框架中提供了很多注解的校验,如下: 注解 运行时检查 @AssertFalse 被注解的元素必须为false @AssertTrue 被注解的元素 ...
- 【Spring】SpringMVC中浅析Date类型数据的传递
在控制器中加入如下代码: @InitBinder public void initBinder(ServletRequestDataBinder bin){ SimpleDateFormat sdf ...
- 详解SpringMVC中GET请求
GET请求概述 GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接.URL的编码格式采用的是ASCII编码,而不是uniclde,所有的非ASCII字符都要编 ...
- SpringMVC中使用Interceptor拦截器
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...
- 如何在springMVC 中对REST服务使用mockmvc 做测试
如何在springMVC 中对REST服务使用mockmvc 做测试 博客分类: java 基础 springMVCmockMVC单元测试 spring 集成测试中对mock 的集成实在是太棒了!但 ...
- springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序 http://www.360doc.com/content/14/03 ...
- SpringMVC中使用Cron表达式的定时器
SpringMVC中使用Cron表达式的定时器 cron(定时策略)简要说明 顺序: 秒 分 时 日 月 星期 年份 (7个参数,空格隔开各个参数,年份非必须参数) 通配符: , 如果分钟位置为* 1 ...
- SpringMVC中使用Json传数据
在web项目中使用Json进行数据的传输是非常常见且有用的,在这里介绍下在SpringMVC中使用Json传数据的一种方法,在我的使用中,主要包括下面四个部分(我个人喜好使用maven这类型工具进行项 ...
随机推荐
- Python 利用字典实现类似 java switch case 功能
def add(): print('add') def sub(): print('sub') def exit(): print('exit') choice = { '1' : add, '2' ...
- a标签禁止跳转或者不跳转的几种实现方式
1.onclick事件中返回false <a href="http://www.baidu.com" onclick="return false" &g ...
- "美女相册"的 js 实现代码
划重点拉! 先来解释一下子标题 这个所谓的美女相册呢 并不是和你们想的一样龌龊 当然了 好像看起来也很龌龊 但是很多的版面都能用到这个功能的 然后在此处 我要为我的my$函数来进行一个诠释 就是 ...
- 【读书笔记】iOS-离线可用的Web应用
众所周知,网页不光需要靠互联网接入访问才能提供各种形式的服务,而且连网页自身的各种设计元素也需要在有网接入的情况上才能获得. 但借助于HTML5的离线特性,我们可以通过把各种类型的资源都储存在Web应 ...
- drupal7常用函数
1.获取当前启用的管理员主题名称: $admin_theme = variable_get('admin_theme');
- 【转】ASP.NET Core 依赖注入
DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚.另外再介绍一下.NET Core的DI实现以及对实例 ...
- php+smarty轻松开发微社区/微论坛
今天我们就来分析微社区的基本功能构成吧.首先,每个论坛最主要的是会员在对应的版块下发帖,或者在感兴趣的主题帖下跟帖盖楼.其次,会员能时时看到帖子或版块的基本信息.所以主要大块是: 前台:会员的注册登录 ...
- Web API与JWT认证
JWT(Json Web Token)定义了一种使用Json形式在网络间安全地传递信息的简洁开放的标准(RFC 7519).JWT使用数字签名确保信息是可信的. 一.Session认证和Token认 ...
- OkHttp封装之后使用
代码都封装好了,上层Activity如何调用呢? 1.依赖 如果是android studio开发支持在线依赖(我已经把项目添加到jcenter上): compile 'com.ansen.http: ...
- CSS中各种长度单位总结
在前端开发工作过程中曾碰到这样一问题: <style type="text/css"> .parent{ width:400px; height:300px; bord ...