SpringMVC文件上传和下载
上传与下载
1文件上传
1.1加入jar包
文件上传需要依赖的jar包
1.2配置部件解析器
解析二进制流数据。
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- 到入xml文件的约束 -->
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
- xmlns:p="http://www.springframework.org/schema/p"
- 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-4.1.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-4.1.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
- ">
- <!-- 开启注解扫描(将对象纳入spring容器) -->
- <context:component-scan base-package="org.guangsoft.controller">
- </context:component-scan>
- <!-- 开始springmvc的映射注解和适配注解 -->
- <mvc:annotation-driven></mvc:annotation-driven>
- <!-- 实例化文件上传的解析器(MIME) -->
- <bean id="multipartResolver"
- class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- <property name="defaultEncoding" value="utf-8"></property><!-- 客户端发送数据的编码 -->
- <property name="maxUploadSize" value="5242880"></property><!-- 上传文件的大小 -->
- <property name="uploadTempDir" value="/upload"></property>
- </bean>
- </beans>
1.3建立FileController
- package org.guangsoft.controller;
- import java.io.File;
- import java.io.IOException;
- import java.util.UUID;
- import javax.servlet.http.HttpSession;
- import org.apache.commons.io.FileUtils;
- import org.springframework.http.HttpHeaders;
- import org.springframework.http.HttpStatus;
- import org.springframework.http.MediaType;
- import org.springframework.http.ResponseEntity;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.multipart.commons.CommonsMultipartFile;
- @Controller
- public class FileController
- {
- /***
- * 实现文件的上传
- *
- * @RequestParam:指定客户端发送数据的名字
- * **/
- @RequestMapping("/uploadFile")
- public String uploadFile(@RequestParam("cmf") CommonsMultipartFile cmf,
- HttpSession session)
- {
- // 1获得上传的文件内容
- byte[] bytes = cmf.getBytes();
- // 2获得upload的绝对路径
- String path = session.getServletContext().getRealPath("/upload");
- // 3在服务器的upload目录下创建File对象
- String oname = cmf.getOriginalFilename(); // 上传文件的原始名字
- String uuid = UUID.randomUUID().toString();
- File file = new File(path, uuid
- + oname.substring(oname.lastIndexOf(".")));
- // 4将上传的文件拷贝到指定的目录
- try
- {
- FileUtils.writeByteArrayToFile(file, bytes);
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- return "index.jsp";
- }
- /***
- * 实现文件下载
- * ***/
- @RequestMapping("/download")
- public ResponseEntity download(HttpSession session)
- {
- // 用来封装响应头信息
- HttpHeaders responseHeaders = new HttpHeaders();
- // 下载的附件的类型
- responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
- // 下载的附件的名称
- responseHeaders.setContentDispositionFormData("attachment", "1.png");
- String path = session.getServletContext().getRealPath("/upload");
- String fname = "b8abd107-ecdd-49ae-9175-b39f1d18a288.png"; // 数据库查询获得
- // 将下载的文件封装流对象
- File file = new File(path, fname);
- try
- {
- /**
- * arg1:需要响应到客户端的数据 arg2:设置本次请求的响应头 arg3:响应到客户端的状态码
- * ***/
- return new ResponseEntity(FileUtils.readFileToByteArray(file),
- responseHeaders, HttpStatus.CREATED);
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- return null;
- }
- }
1.4建立视图页面
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>upload</title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- </head>
- <body>
- <form action="uploadFile.action" method="post"
- enctype="multipart/form-data">
- <div>file<input name="cmf" type="file"/></div>
- <div> <input type="submit" value="提交"/></div>
- </form>
- <hr/>
- <a href="download.action">下载</a>
- </body>
- </html>
2 文件下载
2.1建立下的handler方法
见上
SpringMVC文件上传和下载的更多相关文章
- ExtJS+SpringMVC文件上传与下载
说到文件上传.下载功能,网络上大多介绍的是采用JSP.SpringMVC或者Struts等开源框架的功能,通过配置达到文件上传.下载的目地.可是最近项目要用到文件上传与下载的功能,因为本项目框架采用开 ...
- SpringMVC文件上传和下载的实现
SpringMVC通过MultipartResolver(多部件解析器)对象实现对文件上传的支持. MultipartResolver是一个接口对象,需要通过它的实现类CommonsMultipart ...
- SpringMVC文件上传与下载
一.关键步骤 ①引入核心JAR文件 SpringMVC实现文件上传,需要再添加两个jar包.一个是文件上传的jar包,一个是其所依赖的IO包.这两个jar包,均在Spring支持库的org.apach ...
- springMVC文件上传与下载(六)
1..文件上传 在springmvc.xml中配置文件上传解析器 <!-- 上传图片配置实现类,id必须为这个 --> <bean id="multipartResolve ...
- SpringMVC 文件上传及下载
首先需要导入jar包 创建一个jsp页面 package cn.happy.Controller; import java.io.File; import javax.servlet.http.Htt ...
- SpringMVC文件上传下载
在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/q ...
- 使用SpringMVC框架实现文件上传和下载功能
使用SpringMVC框架实现文件上传和下载功能 (一)单个文件上传 ①配置文件上传解释器 <!—配置文件上传解释器 --> <mvc:annotation-driven>&l ...
- springmvc文件上传下载简单实现案例(ssm框架使用)
springmvc文件上传下载实现起来非常简单,此springmvc上传下载案例适合已经搭建好的ssm框架(spring+springmvc+mybatis)使用,ssm框架项目的搭建我相信你们已经搭 ...
- springmvc之文件上传、下载
1.接收到的是图片的流时 //上传头像 @RequestMapping(value = "/uploadHeadSculpture", method = RequestMethod ...
随机推荐
- xv6课本翻译之——第0章 操作系统接口
Chapter 0 第0章 Operating system interfaces 操作系统接口 The job of an operating system is to share a comput ...
- Beta版本冲刺第六天
Aruba 408 409 410 428 429 431 完成任务: 实现文字导出为图片 改进文字分享 改进存图片功能 修复一些已知bug 立会照片: 燃尽图: commit: coding.net ...
- input placeholder属性 样式修改(颜色,大小,位置)
placeholder属性 样式修改 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- Ajax基础
1 概要 异步JavaScript和XML(Asynchronous Javascript And XML,Ajax)就是使用js来收发来自web服务器的数据,且无需重载整个页面的技术. 注 :xml ...
- 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. ...
- 将JAR包反编译,修改后重新打包(转)
将JAR包反编译,修改后重新打包(转) 在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar.使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间.有的第三方工具,提供具体的 ...
- frame和bounds
- frame 是一个以**父视图**为坐标系的位置- bounds 是一个以**自身**为坐标系的位置- 如果改变了bounds 那么会影响子控件的显示位置
- 如何配置IIS处理多并发请求及存在的问题
很多时候多线程能快速高效独立的计算数据,应用比较多. 但今天遇到的多进程下的问题更是让人觉得复杂 多进程下static变量都要失效,就目前的平台和产品static使用是很多的,各种session.ca ...
- Ajax详解
一:什么是Ajax AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法 ...
- 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 ...