SpringMVC文件上傳和下載


上傳與下載

1文件上傳

1.1加入jar包

文件上傳需要依賴的jar包

1.2配置部件解析器

解析二進制流數據。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!-- 到入xml文件的約束 -->
 3 
 4 <beans xmlns="http://www.springframework.org/schema/beans"
 5  xmlns:context="http://www.springframework.org/schema/context"
 6  xmlns:mvc="http://www.springframework.org/schema/mvc"
 7  xmlns:p="http://www.springframework.org/schema/p"
 8  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 9  xsi:schemaLocation="http://www.springframework.org/schema/beans 10  http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 11  http://www.springframework.org/schema/context 12  http://www.springframework.org/schema/context/spring-context-4.1.xsd 13  http://www.springframework.org/schema/mvc 14  http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd 15  ">
16       
17       <!-- 開啟注解掃描(將對象納入spring容器) -->
18       <context:component-scan base-package="org.guangsoft.controller">
19       </context:component-scan> 
20       
21      <!-- 開始springmvc的映射注解和適配注解 -->
22      <mvc:annotation-driven></mvc:annotation-driven>
23      
24      
25      <!-- 實例化文件上傳的解析器(MIME) -->
26      <bean id="multipartResolver" 
27  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
28          <property name="defaultEncoding" value="utf-8"></property><!-- 客戶端發送數據的編碼 -->
29          <property name="maxUploadSize" value="5242880"></property><!-- 上傳文件的大小 -->
30          <property name="uploadTempDir" value="/upload"></property>
31      </bean>
32      
33 </beans> 

1.3建立FileController

 1 package org.guangsoft.controller;  2 import java.io.File;  3 import java.io.IOException;  4 import java.util.UUID;  5 import javax.servlet.http.HttpSession;  6 import org.apache.commons.io.FileUtils;  7 import org.springframework.http.HttpHeaders;  8 import org.springframework.http.HttpStatus;  9 import org.springframework.http.MediaType; 10 import org.springframework.http.ResponseEntity; 11 import org.springframework.stereotype.Controller; 12 import org.springframework.web.bind.annotation.RequestMapping; 13 import org.springframework.web.bind.annotation.RequestParam; 14 import org.springframework.web.multipart.commons.CommonsMultipartFile; 15 @Controller 16 public class FileController 17 { 18     /*** 19  * 實現文件的上傳 20  * 21  * @RequestParam:指定客戶端發送數據的名字 22  * **/
23     @RequestMapping("/uploadFile") 24     public String uploadFile(@RequestParam("cmf") CommonsMultipartFile cmf, 25  HttpSession session) 26  { 27         // 1獲得上傳的文件內容
28         byte[] bytes = cmf.getBytes(); 29         // 2獲得upload的絕對路徑
30         String path = session.getServletContext().getRealPath("/upload"); 31         // 3在服務器的upload目錄下創建File對象
32         String oname = cmf.getOriginalFilename(); // 上傳文件的原始名字
33         String uuid = UUID.randomUUID().toString(); 34         File file = new File(path, uuid 35                 + oname.substring(oname.lastIndexOf("."))); 36         // 4將上傳的文件拷貝到指定的目錄
37         try
38  { 39  FileUtils.writeByteArrayToFile(file, bytes); 40  } 41         catch (IOException e) 42  { 43  e.printStackTrace(); 44  } 45         return "index.jsp"; 46  } 47     /*** 48  * 實現文件下載 49  * ***/
50     @RequestMapping("/download") 51     public ResponseEntity download(HttpSession session) 52  { 53         // 用來封裝響應頭信息
54         HttpHeaders responseHeaders = new HttpHeaders(); 55         // 下載的附件的類型
56  responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); 57         // 下載的附件的名稱
58         responseHeaders.setContentDispositionFormData("attachment", "1.png"); 59         String path = session.getServletContext().getRealPath("/upload"); 60         String fname = "b8abd107-ecdd-49ae-9175-b39f1d18a288.png"; // 數據庫查詢獲得 61         // 將下載的文件封裝流對象
62         File file = new File(path, fname); 63         try
64  { 65             /**
66  * arg1:需要響應到客戶端的數據 arg2:設置本次請求的響應頭 arg3:響應到客戶端的狀態碼 67  * ***/
68             return new ResponseEntity(FileUtils.readFileToByteArray(file), 69  responseHeaders, HttpStatus.CREATED); 70  } 71         catch (IOException e) 72  { 73  e.printStackTrace(); 74  } 75         return null; 76  } 77

1.4建立視圖頁面

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3 String path = request.getContextPath();  4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     <title>upload</title>
12     <meta http-equiv="pragma" content="no-cache">
13     <meta http-equiv="cache-control" content="no-cache">
14     <meta http-equiv="expires" content="0">    
15     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
16     <meta http-equiv="description" content="This is my page">
17   </head>
18   
19   <body>
20     <form action="uploadFile.action" method="post" 
21  enctype="multipart/form-data">
22         <div>file<input name="cmf" type="file"/></div>
23         <div> <input type="submit" value="提交"/></div>
24     </form>
25     <hr/>
26     <a href="download.action">下載</a>
27   </body>
28 </html> 

2 文件下載

2.1建立下的handler方法

見上 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM