主要有下面三個步驟
javax.servlet.http.Part
介面,接收圖片並轉送到DB<FORM action="uploadServlet3.do" method=post enctype="multipart/form-data">
<input type="file" name="upfile1">
<input type="submit" value="上傳">
</FORM>
@MultipartConfig(fileSizeThreshold = 1024 * 1024, maxFileSize = 5 * 1024 * 1024, maxRequestSize = 5 * 5 * 1024 * 1024)
// 當數據量大於fileSizeThreshold值時,內容將被寫入磁碟
// 上傳過程中無論是單個文件超過maxFileSize值,或者上傳的總量大於maxRequestSize 值都會拋出IllegalStateException 異常
javax.servlet.http.Part
介面主要利用下面這行來獲取part物件。Part req.getPart(String name)
多個part則用Collection<Part> req.getParts
接著來測試 InputStream 與 byte[] (幫將來model的VO預作準備)
Part part = req.getPart("upfile1"); //來自於上面的form表單
InputStream in = part.getInputStream();
byte[] buf = new byte[in.available()];
in.read(buf);
in.close();
out.println("buffer length: " + buf.length);
利用InputStream
將buf
的byte[]
陣列送進資料庫。
為了方便,我會將buf
換成表格名稱,如:md_Pic
。
再來就能透過controller送至DB囉!