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