form表單提交資料的同時上傳檔案程式碼示例
阿新 • • 發佈:2018-11-02
form表單提交資料的同時在表單中上傳檔案程式碼示例
一.定義頁面
注意:在form表單中加入屬性 enctype="multipart/form-data" 表示此表單支援檔案上傳;
我的程式碼示例最主要是講如何在表單中獲取檔案資料,具體檔案上傳在哪裡你們自己定,我這個示例中檔案是上傳在本地,檔案存放的程式碼不全;
<%@ 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> <!-- 上傳圖片是需要指定屬性 enctype="multipart/form-data" --> <!-- <form id="itemForm" action="" method="post" enctype="multipart/form-data"> --> <form id="itemForm" action="${pageContext.request.contextPath }/updateitem.action" method="post" enctype="multipart/form-data"> <input type="hidden" name="id" value="${item.id }" /> 修改商品資訊: <table width="100%" border=1> <tr> <td>商品名稱</td> <td><input type="text" name="name" value="${item.name }" /></td> </tr> <tr> <td>商品價格</td> <td><input type="text" name="price" value="${item.price }" /></td> </tr> <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="${item.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">${item.detail }</textarea> </td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="提交" /> </td> </tr> </table> </form> </body> </html>
二.後臺
@RequestMapping("/updateitem.action") public void updateitem(HttpServletResponse response,Item item,MultipartFile pictureFile) throws IOException{ System.out.println(item); //使用UUID給檔案取一個物理名稱 String fileName = UUID.randomUUID().toString(); //獲取檔案的字尾 String fname = pictureFile.getOriginalFilename(); String ext = fname.substring(fname.lastIndexOf(".")); //將圖片傳入指定的目錄 //儲存路徑 C:\igeek47temp\098234IA1309284ABA09F098.jpg pictureFile.transferTo(new File(PIC_PATH+fileName+ext)); //將圖片的訪問路徑儲存到item物件中。 /pic/098234IA1309284ABA09F098.jpg item.setPic("/pic/"+fileName+ext); itemService.updateItem(item); //重定向到商品列表 response.sendRedirect("itemList.action"); }
三.springMVC配置
<!-- 檔案上傳,id必須設定為multipartResolver -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 設定檔案上傳大小 -->
<property name="maxUploadSize" value="5000000" />
</bean>