Spring框架學習(8)spring mvc上傳下載
阿新 • • 發佈:2018-05-01
class tor XML smart details targe resp imp common
內容源自:spring mvc上傳下載
如下示例:
頁面:
web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <servlet-name>etoak</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>etoak</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
etoakk-servlet.xml:
<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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <!-- 請求解析器 字符請求解析器 HandlerMapping 字節請求解析器 MultipartResolver CommonsMultipartResolver 當服務器端使用commons-fileupload處理上傳請求時,使用該解析器 StandardServletMultipartResolver 當服務器段使用smartupload處理上傳請求時,使用該解析器 註意:在註冊上傳請求解析器時,該解析器的名字(id)值必須是 : multipartResolver 接口名-首字母小寫 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean> <context:component-scan base-package="com"/> </beans>
FileController.java:
@Controller public class FileController { @RequestMapping("/upload") public String upload(User user , HttpServletRequest request)throws Exception{ MultipartFile myfile = user.getMyfile(); String filename = myfile.getOriginalFilename(); String contentType = myfile.getContentType(); long size = myfile.getSize(); // 從上傳文件中獲取一個輸入流 InputStream is = myfile.getInputStream(); // 定位到file目錄 request.session.ServletContext.getRealPath("/file") String path = request.getSession().getServletContext().getRealPath("/file"); String newFilename = new UUIDGenerator().generate().toString()+ filename.substring(filename.lastIndexOf(".")); File file = new File(path+"/"+newFilename); OutputStream os = new FileOutputStream(file); int len; byte[] data = new byte[1024]; while((len=is.read(data))!=-1) os.write(data, 0, len); is.close(); os.close(); return "redirect:success.jsp"; } @RequestMapping("/download") public void download(String filename,HttpServletRequest request,HttpServletResponse response) throws Exception{ System.out.println("文件名"+filename); String path = request.getSession().getServletContext().getRealPath("/file"); File file = new File(path+"/"+filename); response.setContentType("multipart/form-data"); response.setHeader("content-Disposition", "attachment;filename="+filename); InputStream is = new FileInputStream(file); OutputStream os = response.getOutputStream(); int len; byte[] data = new byte[1024]; while((len=is.read(data))!=-1) os.write(data, 0, len); is.close(); os.close(); } }
User.java:
package com.etoak.bean; import org.springframework.web.multipart.MultipartFile; public class User { /** myfile 文件 * spring-mvc如何封裝文件類型對象 * * struts1 - FormFile * struts2 - File String String * spring-mvc - MultipartFile接口 、 CommonsMultipartFile */ private MultipartFile myfile; public MultipartFile getMyfile() { return myfile; } public void setMyfile(MultipartFile myfile) { this.myfile = myfile; } }
Spring框架學習(8)spring mvc上傳下載