Spring MVC筆記(七) springMVC文件上傳
阿新 • • 發佈:2017-12-26
one 模型 定義 admin copy att post version get
創建springMVC工程 SpringMVCFileUpload,導入springMVC相關jar以及commons-io.jar、commons-fileupload.jar;
創建springMVC默認配置文件 SpringMVCFileUpload-servlet.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <context:component-scan base-package="com.bwy" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> </beans>
創建文件模型 FileModel.java:
package com.bwy.fileupload; import org.springframework.web.multipart.MultipartFile; public class FileModel { private MultipartFile file; public MultipartFile getFile() { return file; } public void setFile(MultipartFile file) { this.file = file; } }
編寫上傳頁面 fileUpload.jsp:
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> <!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=ISO-8859-1"> <title>Spring MVC 文件上傳</title> </head> <body> <form:form action="/SpringMVCFileUpload/upload.do" method="post" modelAttribute="fileUpload" enctype="multipart/form-data"> 請選擇一個文件上傳:<input type="file" name="file" /> <input type="submit" value="提交上傳" /> </form:form> </body> </html>
上傳成功頁面 success.jsp:
<%@ page language="java" 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=ISO-8859-1"> <title>Insert title here</title> </head> <body> ${fileName},上傳成功! </body> </html>
編寫上傳文件控制類:FileUploadController.java:
package com.bwy.fileupload; import java.io.File; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; /** * 文件上傳控制類 * * @author Administrator * */ @Controller public class FileUploadController { @RequestMapping(value = "/uploadPage", method = RequestMethod.GET) public ModelAndView fileUploadPage() { return new ModelAndView("fileUpload", "command", new FileModel()); } @RequestMapping(value = "/upload.do", method = RequestMethod.POST) public String upload(FileModel file, ModelMap model, HttpServletRequest request) { // 定義文件上傳目錄 String fileUploadPath = request.getSession().getServletContext().getRealPath("") + File.separator + "upload" + File.separator; // 生成目錄 File uploadFile = new File(fileUploadPath); if (!uploadFile.exists()) { uploadFile.mkdir(); } try { // 拷貝文件,假設上傳後的文件名為:xx/xx/1.jpg FileCopyUtils.copy(file.getFile().getBytes(), new File(fileUploadPath + "1.jpg")); } catch (IOException e) { e.printStackTrace(); } model.addAttribute("fileName", file.getFile().getOriginalFilename()); return "success"; } }
啟動tomcat 運行工程:
Spring MVC筆記(七) springMVC文件上傳