太菜了…上传图片写了好久好久…
- 配置虚拟上传目录
在tomcat上配置图片虚拟目录,在tomcat下conf/server.xml中添加:
<Context docBase="D:\Student\upload\" path="/pic" reloadable="false"/>
访问http://localhost:8080/pic即可访问D:\Student\upload\下的图片。
也可以通过eclipse配置
- 导包
- 配置SpringMvc.xml
<!-- 文件上传,id必须设置为multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置文件上传大小 -->
<property name="maxUploadSize" value="5000000" />
</bean>
<!-- 开启MVC事务注解 -->
<mvc:annotation-driven />
- 在jsp页面中写一个上传图片的地方,一定要记得enctype="multipart/form-data"
这里的${sessionScope.student.stdid}是从session中获取的已登录对象的id
<form method="post" action="${pageContext.request.contextPath }/AddStdpic.action"
enctype="multipart/form-data">
<input type = "hidden" name = "stdid" value = "${sessionScope.student.stdid}"/>
<input type="file" name = "stdpicfile"/>
<input type = "submit" value = "上传"/>
</form>
- Controller层,注意上传文件接口:,MultipartFile stdpicfile
@RequestMapping("/AddStdpic.action")
public String AddStdpic(StdpicBean stdpic,MultipartFile stdpicfile,HttpServletResponse response,HttpServletRequest request,Model model) throws IOException{
//上传图片,设置图片名称,使用uuid函数,保证图片名称的唯一性,这样就可以上传重复的图片
String stdpicname = UUID.randomUUID().toString().trim().replace("-", "");
//获取文件名
String filename = stdpicfile.getOriginalFilename();
//获取文件后缀名
String extname = filename.substring(filename.lastIndexOf("."));
//开始上传图片,上传到本机D盘
stdpicfile.transferTo(new File("D:/Student/upload/"+stdpicname+extname));
//添加图片
stdpic.setStdpicname(stdpicname+extname);
stdpicservice.AddStdpic(stdpic);
//回到space.jsp中,发起ajax请求,查询所有图片
return "/space";
}
这样就大功告成了,我为什么能写这么久…崩溃…