废话不多说,直接上代码,解析看下面:
maven加入依赖包:
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
springMVC的配置文件中加入:
<!-- 4.3.支持文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置默认编码 -->
<property name="defaultEncoding" value="utf-8"></property>
<!-- 上传图片最大大小5M-->
<property name="maxUploadSize" value="5242440"></property>
</bean>
jsp页面加入:
<a href="#" target="_top"><img src="${pageContext.request.contextPath }/${user.uimg}" style="width:75px;height:75px;" alt="暂无显示"></a>
其中user是从数据库查询到的内容,img是user的一个属性,String类型
用户注册界面(想想还是贴上吧):
<form name="tijiao" method="post" action="/mdnc/user/registerUser" enctype="multipart/form-data">
<div class="pg">
<div class="close"> </div>
<div class="head-info">
<label class="lbl-1"> </label>
<label class="lbl-2"> </label>
<label class="lbl-3"> </label>
</div>
<div class="pg_body">
<div class="menu">用户名:</div>
<div class="kong">
<input id="username_text" type="text" name="uname" placeholder="请输入用户名" onblur="check()"><span id="username" class="tian" style="margin-top: 4px">*(为必填)<span>
</div>
<div class="menu">真实姓名:</div>
<div class="kong">
<input id="really_name" type="text" name="realname">
</div>
<div class="menu">性别:</div>
<div class="kong" style="width:200px;">
男<input type="radio" name="sex" value="男" checked="checked">
女 <input type="radio" name="sex" value="女">
</div>
<div class="menu">密码:</div>
<div class="kong">
<input id="passwd_text" type="password" name="pwd" onblur="check()">
<span id="password" class="tian" style="margin-top: -25px">*(为必填)<span>
</div>
<div class="menu">确认密码:</div>
<div class="kong">
<input id="repasswd_text" type="password" onblur="check()">
<span id="sure_password" class="tian">*(为必填)<span>
</div>
<div class="menu">电话号码:</div>
<div class="kong">
<input id="tel_text" type="text" name="tel"
onblur="check()">
<span id="tellphone" class="tian">*(为必填)<span>
</div>
<div class="menu">邮箱地址:</div>
<div class="kong">
<input id="email_text" type="text" name="email" onblur="check()">
<span id="mail" class="tian">*(为必填)</span>
</div>
<div class="menu">头像上传: </div>
<div class="kong">
<input type="file" name="file" value="选择头像" accept="image/*">
</div>
</div>
<div class="register">
<input id="id_register" type="submit" name="register" value="注册">
<input id="id_cancel" type="button" name="cancel" value="取消" onclick="checkReload()">
</div>
</div>
</form>
表单验证逻辑:
/**
* 用户注册
*/
@RequestMapping("registerUser")
public String registerUser(@RequestParam("file") MultipartFile myfile , Users users, HttpServletRequest request) {
//数据库存在
List<Users> ulist=userService.findByName(users.getUname());
if(ulist.size()>0){
return "login";
}
//文件为空时
if(myfile.isEmpty()){
System.out.println("文件未上传");
}else{
try {
//上传后的地址,注意("/upload")是表示文件上传后的目标文件夹
String realPath = request.getSession().getServletContext().getRealPath(uimgPath);
System.out.println("打印文件上传的路径"+realPath);
//获取文件名
String filename = myfile.getOriginalFilename();
//获取文件后缀名
String extensionname = filename.substring(filename.lastIndexOf(".") + 1);
//给上传的文件起别名,有很多种方式
String newFilename=String.valueOf(System.currentTimeMillis())+"."+extensionname;
//创建File对象,传入目标路径参数,和新的文件别名
File dir=new File(realPath,newFilename);
users.setUimg(new File(uimgPath,newFilename).toString());
if (!dir.exists()){//如果dir代表的文件不存在,则创建它,
dir.mkdirs();//
}
//如果存在则直接执行下面操作
myfile.transferTo(dir);//将上传的实体文件复制到指定目录upload下
} catch (IOException e) {
e.printStackTrace();
}
}
users.setId(userService.getMaxUid());
users.setUtype("1");
userService.registerUser(users);
return "login";
}
写出了主要逻辑,这里使用使用了ssm框架,uimg是配置路径,可以写死,我方便后期更改,把图片路径存在了配置文件中,以下是配置文件内容:
uimg.path=/uimgs
最后运行上传图片,打开jsp页面就可以看见图片显示了!