一、通过浏览器访问图片

1、配置虚拟目录

spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_加载


spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_加载_02


spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_拦截器_03


spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_MVC_04


配置完成

spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_拦截器_05


以上配置相当于在tomcat的server.xml文件当中配置

spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_加载_06

2、通过浏览器访问对应目录下的图片

spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_加载_07


访问路径:http://localhost:8080/pic/1.png

spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_MVC_08

二、文件上传

1、引入jar包

spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_加载_09


spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_拦截器_10

2、配置多媒体解析器

spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_拦截器_11

<!-- 配置多媒体处理器 -->
	<!-- 注意:这里id必须填写:multipartResolver -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 最大上传文件大小 -->
		<property name="maxUploadSize" value="8388608" />
	</bean>

限制最大上传8M=8388608

3、修改itemEdit.jsp

spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_拦截器_12

<form id="itemForm"	action="${pageContext.request.contextPath }/updateItem.action" enctype="multipart/form-data" method="post">
		<input type="hidden" name="id" value="${item.id }" /> 修改商品信息:
		<table width="100%" border=1>
			<tr>

spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_MVC_13

<tr>
				<td>商品生产日期</td>
				<td><input type="text" name="createtime"
					value="<fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>" /></td>
			</tr>
			<tr>
				<td>商品图片</td>
				<td>
					<c:if test="${item.pic !=null}">
						<img src="/pic/${item.pic}" width=100 height=100/>
						<br/>
					</c:if>
					<input type="file"  name="pictureFile"/> 
				</td>
			</tr>

访问http://localhost:8080/itemList.action

spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_拦截器_14


spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_MVC_15

4、修改ItemController当中的updateItem实现上传图片的功能

spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_加载_16

/**
	 * 修改商品 演示pojo参数绑定
	 * @param item
	 * @return
	 * @throws IOException 
	 * @throws IllegalStateException 
	 */
	@RequestMapping(value = "updateItem", method = { RequestMethod.POST, RequestMethod.GET })
	public String updateItem(Item item, MultipartFile pictureFile, Model model) throws  Exception {
		// 图片新名字
		String newName = UUID.randomUUID().toString();// 创建新的图片名称
		// 图片原来的名字
		String oldName = pictureFile.getOriginalFilename();
		// 后缀
		String sux = oldName.substring(oldName.lastIndexOf("."));
		//新建本地文件流
		File file = new File("D:\\tomcatimage\\" + newName + sux);
		// 写入本地磁盘
		pictureFile.transferTo(file);
		//保存图片到数据库
		item.setPic(newName + sux);

		itemService.updateItem(item);
		model.addAttribute("item", item);
		model.addAttribute("msg", "修改商品信息成功");
		return "itemEdit";
		// return "forward:itemEdit.action";//请求转发
		//return "redirect:itemList.action";// 重定向
	}
5、修改Item类,在createtime上添加@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_加载_17

package com.itzheng.springmvc.pojo;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
public class Item {
    private Integer id;
    private String name;
    private Float price;
    private String detail;
    private String pic;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createtime;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }
    public Float getPrice() {
        return price;
    }
    public void setPrice(Float price) {
        this.price = price;
    }
    public String getDetail() {
        return detail;
    }
    public void setDetail(String detail) {
        this.detail = detail == null ? null : detail.trim();
    }
    public String getPic() {
        return pic;
    }
    public void setPic(String pic) {
        this.pic = pic == null ? null : pic.trim();
    }
    public Date getCreatetime() {
        return createtime;
    }
    public void setCreatetime(Date createtime) {
        this.createtime = createtime;
    }
	@Override
	public String toString() {
		return "Item [id=" + id + ", name=" + name + ", price=" + price + ", detail=" + detail + ", pic=" + pic
				+ ", createtime=" + createtime + "]";
	}
}
6、运行测试

http://localhost:8080/itemEdit.action?id=1 选择对应图片,提交

spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_拦截器_18


spring MultipartFile 上传 分析 Excel 后 MultipartFile对象需要销毁吗_MVC_19