首先我使用的开发工具是IntelliJ idea,今天想做一个上传头像以及显示头像的简单功能·,也在网上查询了很多资料,真的看得头大,最后还是自己鼓捣出来了,明明很简单的一个功能,先看看效果吧。
需要注意的地方
1.记住要在wepapp文件目录下创建你文件上传的目录。
2.需要在你创建的目录下随便生成任意格式的文件,如hello.txt,若不创建可能上传不成功(没问题最好)
3.上传的图片不会在webapp目录下你创建的目录下,而是在生成的target目录下,注意查看
4.若需要存储图片到mysql中,只需要存储文件名就行了
首先springmvc.xml添加基本配置
<!--注册multipartResolver,由DispatcherServlet来负责调用-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--设置字符编码防止文件名乱码-->
<property name="defaultEncoding" value="utf-8"/>
<!--设置单个上传文件的大小,单位是字节b-->
<property name="maxUploadSizePerFile" value="1048576"/>
</bean>
UploadController.java
@Controller
public class UploadController {
@RequestMapping("/upload.do")
public ModelAndView upload(MultipartFile photo, HttpSession session)throws Exception{
ModelAndView mv = new ModelAndView();
//判断用户是否上传了文件
if(!photo.isEmpty()){
//文件上传的地址
String realPath = session.getServletContext().getRealPath("/upload");
//获取文件的名称
final String fileName = photo.getOriginalFilename();
//限制文件上传的类型
String contentType = photo.getContentType();
if("image/jpeg".equals(photo.getContentType())){
File file = new File(realPath,fileName);
//完成文件的上传
photo.transferTo(file);
//System.out.println(path);
//System.out.println(fileName);
mv.addObject("filename",fileName);
} else {
mv.addObject("msg","请选择jpg的文件格式进行上传");
mv.addObject("type",contentType);
mv.setViewName("fail");
return mv;
}
} else {
mv.addObject("msg","请选择jpg的文件格式进行上传哦");
mv.setViewName("fail");
return mv;
}
//跳转到成功页面
mv.setViewName("upload_success");
return mv;
}
upload.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="/upload.do">
图片1: <input type="file" name="photo"><br>
<input type="submit" value="上传">
</form>
</body>
</html>
upload_sucess.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>上传成功了</h2>
<img src="../upload/${filename}">
<br>
</body>
</html>