SSM框架中圖片的上傳功能
阿新 • • 發佈:2018-12-18
謹以此篇,送給那些還不會用SSM框架上傳圖片的小夥伴
廢話不多說,直接上程式碼:
jsp頁面展示(僅展示關鍵部分):
這裡需要注意的是:①:請求方法必須是POST
②:需要使用元件 <input type="file" name="file">
③:表單必須設定enctype=“multipart/form-data”
<table width="100%" height="90%" border="0" cellpadding="10" cellspacing="0" class="main_tabbor"> <tr valign="top"> <td> <form id="documentForm" name="documentForm" action="${pageContext.request.contextPath}/addReport.action" enctype="multipart/form-data" method="post"> <!-- 隱藏表單,flag表示新增標記 --> <input type="hidden" name="flag" value="2"> <input type="hidden" name="method" value="upload"> <table width="100%" border="0" cellpadding="0" cellspacing="10" class="main_tab"> <tr><td class="font3 fftd"> 新聞標題:<input type="text" name="reportTitle" size="30" id="reportTitle"/></td> </tr> <tr><td class="main_tdbor"></td></tr> <tr><td class="font3 fftd">新聞描述:<br/> <textarea name="reportDes" cols="88" rows="11" id="reportDes"></textarea> </td></tr> <tr><td class="main_tdbor"></td></tr> <tr><td class="font3 fftd">新聞圖片:<br/> <input type="file" name="attachs" id="attachs" size="30"/> </td></tr> <tr><td class="main_tdbor"></td></tr> <tr><td class="font3 fftd">新聞網頁:<br/> <input type="file" name="attachs" id="attachs" size="30"/> </td></tr> <tr><td class="main_tdbor"></td></tr> <tr><td class="font3 fftd"> <input type="submit" id="btn" value="上傳"> <input type="reset" value="重置"> </td></tr> <tr><td class="main_tdbor"></td></tr> </table> </form> </td> </tr> </table>
後臺控制層:
@RequestMapping(value = "/addReport", method = RequestMethod.POST) public void addReport(Report report, HttpSession session, @RequestParam(value = "attachs", required = false) MultipartFile[] attachs, HttpServletRequest request, HttpServletResponse response) { // 定義上傳檔案的路徑 String fileName; // 定義檔案儲存的位置 String path = request.getSession().getServletContext().getRealPath("/upload"); // 迴圈讀取檔案資訊 for (int i = 0; i < attachs.length; i++) { MultipartFile attach = attachs[i]; if (!attach.isEmpty()) {// 判斷檔案是否為空 // 判斷是第幾個檔案 if (i == 0) { fileName = upload(path, attach); report.setReportPicture("upload\\"+fileName); } else if (i == 1) { fileName = upload(path, attach); report.setReportUrl("upload\\"+fileName); } } } Integer count = reportService.addReport(report); if (count > 0) { try { response.getWriter().write("<script>alert('新增成功!');location.href='"+ request.getServletContext().getContextPath() + "/findAllReport.action';</script>"); } catch (IOException e) { } } else { try { response.getWriter().write("<script>alert('新增失敗!');location.href='"+ request.getServletContext().getContextPath() + "/findAllReport.action';</script>"); } catch (IOException e) { } } }
實現上傳功能的程式碼:
/** * 上傳 * @Title: upload * @Description: TODO * @param @param path * @param @param attach * @param @return * @return String * @throws */ private String upload(String path, MultipartFile attach) { String fileName; File file; //獲取檔案拓展名 fileName = attach.getOriginalFilename(); //新的檔名 fileName = System.currentTimeMillis()+fileName; System.out.println(fileName); //封裝檔案儲存位置的全路徑 file=new File(path, fileName); if (!file.exists()) { file.mkdirs(); } //上傳 try { attach.transferTo(file); } catch (IllegalStateException | IOException e) { System.out.println("上傳失敗"); } return fileName; }
就到這裡啦,service層和dao層不變…