一,文件上传页面三要素
1. 表单提交的方式method一定是post
2. 表单enctype的值一定是multipart/form-data
3. input的类型一定是file
<form id="itemForm" action="${pageContext.request.contextPath }/updateitem.action" enctype="multipart/form-data" method="post">
<table width="100%" border=1>
<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>
<tr>
<td colspan="2" align="center"><input type="submit" value="提交" />
</td>
</tr>
</table>
</form>
二,springmvc的要素
1. 需要添加两个jar commons-io.jar commons-fileupload.jar
2. 在springmvc容器中配置文件解析器
<!-- 文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为5MB -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
3.绑定参数类型 MultipartFile ,参数的名字要和 input的name属性值保持一致
@RequestMapping("/updateitem")
public String updateitem(Items items,MultipartFile pictureFile) throws Exception {
}
三,文件的保存
@RequestMapping("/updateitem")
public String updateitem(Items items,MultipartFile pictureFile) throws IllegalStateException, IOException {
//获取上传文件名,带扩展名
String originalFilename = pictureFile.getOriginalFilename();
//创建一个随机数,作为文件新名字
String filename = UUID.randomUUID().toString();
//获取上传文件扩展名
String ext = originalFilename.substring(originalFilename.lastIndexOf("."));
//保存文件
pictureFile.transferTo(new File("h:\\updateFile\\"+filename+ext));
//.....
return "redirect:list.action";
}