在SpringMVC的開發中我們必不可少的需要用到文件上傳功能,其開發步驟與Struts2有一些相似之處,在本文中通過一個圖片上傳的案例進行講解。
在進行文件上傳的開發時我們需要加入如下jar包:
百度雲下載:點擊下載
首先我們先看一下上傳圖片的頁面代碼:
<%@ 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>
<form id="phtotForm" action="${pageContext.request.contextPath }/data/photoUpload.action" method="post" enctype="multipart/form-data">
<input type="file" name="pictureFile"/>
<input type="submit" value="上傳"/>
</form>
</body>
</html>
如上代碼所示,在form標籤中我們可以看到有了一個enctype="multipart/form-data"的屬性,這個屬性就指定了我們上傳的是文件類型,那麼在speinrmvc中我們就要對multipart類型的數據進行解析。
注意:<input type="file" name="pictureFile"/> 中的name與Conreoller方法的參數MultipartFile pictureFile一致。
則在springmvc.xml中添加解析器代碼如下:
<!-- 文件上傳配置 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 設置上傳文件的最大尺寸 -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
接下來我們可以在Controller中進行上傳文件的後臺的編寫了:
//圖片上傳功能實現
@RequestMapping("/photoUpload")
public String photoUpload(Model model,MultipartFile pictureFile){
//選擇文件的名稱
String picture_name = pictureFile.getOriginalFilename();
//上傳圖片
File uploadPic = new java.io.File("E:/JavaWeb/Servlet/fileupload/temp/"+picture_name);
if(uploadPic.exists()){
uploadPic.mkdirs();
}
//向磁盤寫入文件
try {
pictureFile.transferTo(uploadPic);
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
}
model.addAttribute("picture_name", picture_name);
model.addAttribute("mkdir", uploadPic);
return "/FileUploadSuccess";
}
如上代碼所示,即將頁面選中的圖片上傳到了指定的目錄中去,其文件名不變。
圖片上傳成功後,跳轉到成功頁面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
<p>圖片文件上傳成功</p>
<p>文件名稱:</p>
<p>${picture_name}</p>
<p>上傳圖片如下:</p>
<img alt="上傳圖片" src="${mkdir}">
</body>
</html>
接下來我們進行一個上傳圖片文件的測試:
如上爲上傳圖片界面,通過輸入框選擇了圖片,點擊上傳如下:
如上我們可以看到,此文件已經上傳成功了,已經可以在頁面顯示我們之前上傳的圖片,我們再看一下目錄是否已經存在此文件:
如上所示,服務器目錄也已經存在此圖片文件,則我們的上傳圖片文件的案例運行成功。