1. 程式人生 > >SSM框架中圖片的上傳功能

SSM框架中圖片的上傳功能

謹以此篇,送給那些還不會用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層不變…