1.1 上傳圖片
在頁面form中提交enctype="multipart/form-data"的數據時,需要springmvc對multipart類型的數據進行解析。
在springmvc.xml中配置multipart類型解析器。
1.1.1 配置虛擬目錄
在tomcat上配置圖片虛擬目錄,在tomcat下conf/server.xml中添加:
<Context docBase="F:\develop\upload\temp"path="/pic" reloadable="false"/>
訪問http://localhost:8080/pic即可訪問F:\develop\upload\temp下的圖片。
注意:在圖片虛擬目錄中,一定將圖片目錄分級創建(提高i/o性能),一般我們採用按日期(年、月、日)進行分級創建。
也可以通過eclipse配置:
1.1.2 配置解析器
<!-- 文件上傳 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 設置上傳文件的最大尺寸爲5MB -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
1.1.3 jar包
CommonsMultipartResolver解析器依賴commons-fileupload和commons-io,加入如下jar包:
1.1.4 圖片上傳
u controller:
//商品修改提交
@RequestMapping("/editItemSubmit")
public String editItemSubmit(Items items, MultipartFilepictureFile)throws Exception{
//原始文件名稱
String pictureFile_name = pictureFile.getOriginalFilename();
//新文件名稱
String newFileName = UUID.randomUUID().toString()+pictureFile_name.substring(pictureFile_name.lastIndexOf("."));
//上傳圖片
File uploadPic = new java.io.File("F:/develop/upload/temp/"+newFileName);
if(!uploadPic.exists()){
uploadPic.mkdirs();
}
//向磁盤寫文件
pictureFile.transferTo(uploadPic);
.....
u 頁面:
form添加enctype="multipart/form-data":
<form id="itemForm"
action="${pageContext.request.contextPath}/item/editItemSubmit.action"
method="post" enctype="multipart/form-data">
<input type="hidden"name="pic" value="${item.pic }"/>
file的name與controller形參一致:
<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>