tomcat实现图片上传

  • 导入jar包
  • 在springmvc中配置管理文件上传的解析器
  • 在tomact中双击,add external web module…
  • jsp页面写input file域,注意表单要有 enctype=“multipart/form-data”
  • 在controller写具体步骤

springmvc

    <!-- 创建管理文件上传的解析器-->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 设置上传文件的最大尺寸为5MB -->
		<property name="maxUploadSize">
			<value>5242880</value>
		</property>
	</bean>

在这里插入图片描述
在这里插入图片描述
jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>修改商品信息</title>

</head>
<body> 

<form id="itemForm" action="${pageContext.request.contextPath }/updateitems.action" method="post" enctype="multipart/form-data">
<input type="hidden" name="id" value="${items.id }"/>
修改商品信息:
<table width="100%" border=1>
<tr>
	<td>商品名称</td>
	<td><input type="text" name="name" value="${items.name }"/></td>
</tr>
<tr>
	<td>商品价格</td>
	<td><input type="text" name="price" value="${items.price }"/></td>
</tr>
<tr>
	<td>商品生产日期</td>
	<td><input type="text" name="createtime" value="<fmt:formatDate value="${items.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/></td>
	<td>
		
			${map['time']}

	</td>
</tr>
<tr>
	<td>商品图片</td>
	<td>
		<c:if test="${items.pic !=null && items.pic != ''}">
			<img src="/pic/${items.pic}" width=100 height=100/>
			<br/>
		</c:if>
		<input type="file"  name="pictureFile"/> 
	</td>
</tr>
<tr>
	<td>商品简介</td>
	<td>
	<textarea rows="3" cols="30" name="detail">${items.detail }</textarea>
	</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="提交"/>
</td>
</tr>
</table>

</form>
</body>

<c:if test="${errors != null }">
	<c:forEach items="${errors }" var="err">
		${err.defaultMessage }
	</c:forEach>
</c:if>


</html>

controller

@RequestMapping("/updateitems")
	public String updateitems(Model model,Integer id,@ModelAttribute(value="") @Validated(value={ItemsGroup1.class}) Items items,BindingResult bindingResult,
			MultipartFile pictureFile) throws Exception{
		
		List<ObjectError> errors = bindingResult.getAllErrors();
		Map<String,String> map = new HashMap<String,String>();
		if(errors != null && errors.size()!=0){
			for(ObjectError error : errors){
				System.out.println(error.getDefaultMessage());
				if(error.getDefaultMessage().equals("生产日期不能为空")){
					map.put("time",error.getDefaultMessage() );
				}
			}
			model.addAttribute("errors", errors);
			model.addAllAttributes(map);
			System.out.println(map);
			return "items/editItems";
		}
		
		
		//实现图片上传
		//1.获取上传图片的原始名称
		String oldname = pictureFile.getOriginalFilename();
		
		//
		if(pictureFile != null && oldname != null && oldname.length()>0){
			//指定图片保存的路径
			String pic_path = "D:\\WGS_upload\\temp_img\\";
			
			//生成一个新的图片名称
			//UUID.randomUUID()相当于随机数
			//oldname.substring(oldname.lastIndexOf("."))截取字符串,oldname.lastIndexOf(".")最后一个点,想当于截取到后缀名
			String newname = UUID.randomUUID()+oldname.substring(oldname.lastIndexOf("."));
			
			//创建一张图片
			File newFile = new File(pic_path+newname);
			
			//执行文件上传拷贝
			pictureFile.transferTo(newFile);
			
			//给商品对象保存图片名称
			items.setPic(newname);
			
		}
		
		
		itemsService.updateByPrimaryKeyWithBLOBs(id, items);
		//return "sucess";
		return "forward:getitems.action";
	}
发布了213 篇原创文章 · 获赞 104 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42363032/article/details/104167047