上传与下载

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. <!-- 实例化文件上传的解析器(MIME) -->
  25. <bean id="multipartResolver"
  26. class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  27. <property name="defaultEncoding" value="utf-8"></property><!-- 客户端发送数据的编码 -->
  28. <property name="maxUploadSize" value="5242880"></property><!-- 上传文件的大小 -->
  29. <property name="uploadTempDir" value="/upload"></property>
  30. </bean>
  31.  
  32. </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方法

见上

SpringMVC文件上传和下载的更多相关文章

  1. ExtJS+SpringMVC文件上传与下载

    说到文件上传.下载功能,网络上大多介绍的是采用JSP.SpringMVC或者Struts等开源框架的功能,通过配置达到文件上传.下载的目地.可是最近项目要用到文件上传与下载的功能,因为本项目框架采用开 ...

  2. SpringMVC文件上传和下载的实现

    SpringMVC通过MultipartResolver(多部件解析器)对象实现对文件上传的支持. MultipartResolver是一个接口对象,需要通过它的实现类CommonsMultipart ...

  3. SpringMVC文件上传与下载

    一.关键步骤 ①引入核心JAR文件 SpringMVC实现文件上传,需要再添加两个jar包.一个是文件上传的jar包,一个是其所依赖的IO包.这两个jar包,均在Spring支持库的org.apach ...

  4. springMVC文件上传与下载(六)

    1..文件上传 在springmvc.xml中配置文件上传解析器 <!-- 上传图片配置实现类,id必须为这个 --> <bean id="multipartResolve ...

  5. SpringMVC 文件上传及下载

    首先需要导入jar包 创建一个jsp页面 package cn.happy.Controller; import java.io.File; import javax.servlet.http.Htt ...

  6. SpringMVC文件上传下载

    在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/q ...

  7. 使用SpringMVC框架实现文件上传和下载功能

    使用SpringMVC框架实现文件上传和下载功能 (一)单个文件上传 ①配置文件上传解释器 <!—配置文件上传解释器 --> <mvc:annotation-driven>&l ...

  8. springmvc文件上传下载简单实现案例(ssm框架使用)

    springmvc文件上传下载实现起来非常简单,此springmvc上传下载案例适合已经搭建好的ssm框架(spring+springmvc+mybatis)使用,ssm框架项目的搭建我相信你们已经搭 ...

  9. springmvc之文件上传、下载

    1.接收到的是图片的流时 //上传头像 @RequestMapping(value = "/uploadHeadSculpture", method = RequestMethod ...

随机推荐

  1. xv6课本翻译之——第0章 操作系统接口

    Chapter 0 第0章 Operating system interfaces 操作系统接口 The job of an operating system is to share a comput ...

  2. Beta版本冲刺第六天

    Aruba 408 409 410 428 429 431 完成任务: 实现文字导出为图片 改进文字分享 改进存图片功能 修复一些已知bug 立会照片: 燃尽图: commit: coding.net ...

  3. input placeholder属性 样式修改(颜色,大小,位置)

    placeholder属性 样式修改 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  4. Ajax基础

    1 概要 异步JavaScript和XML(Asynchronous Javascript And XML,Ajax)就是使用js来收发来自web服务器的数据,且无需重载整个页面的技术. 注 :xml ...

  5. Could not find or load main class org.gradle.wrapper.GradleWrapperMain解决办法

    解决办法: gradlew is the gradle wrapper executable - batch script on windows and shell script elsewhere. ...

  6. 将JAR包反编译,修改后重新打包(转)

     将JAR包反编译,修改后重新打包(转)   在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar.使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间.有的第三方工具,提供具体的 ...

  7. frame和bounds

    - frame 是一个以**父视图**为坐标系的位置- bounds 是一个以**自身**为坐标系的位置- 如果改变了bounds 那么会影响子控件的显示位置

  8. 如何配置IIS处理多并发请求及存在的问题

    很多时候多线程能快速高效独立的计算数据,应用比较多. 但今天遇到的多进程下的问题更是让人觉得复杂 多进程下static变量都要失效,就目前的平台和产品static使用是很多的,各种session.ca ...

  9. Ajax详解

    一:什么是Ajax AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法 ...

  10. svn检出的时候报 Unable to connect to a repository at URL错误(摘自CSDN)

    背景:1.         SVN服务器:VisualSVN-Server-2.5.5: 2. SVN客户端:TortoiseSVN-1.7.6.22632-x64-svn-1.7.4.msi: 在S ...