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 ...
随机推荐
- iOS-绘图
0 CGContextRef context = UIGraphicsGetCurrentCont ext(); 设置上下文 1 CGContextMoveToPoint 开始画线 2 CGCon ...
- ssh key生成
Mac电脑用终端生成SSH key 访问自己的Github 字数684 阅读427 评论4 喜欢15 前言:最近有不少刚刚使用github管理代码的开发者或者新手码农在网上 问我如何关联自己的gith ...
- windows下python的web环境搭建使用(观看Backbone的教程有感)
pip安装a 下载 get-pip.py (https://pip.pypa.io/en/latest/installing/#python-os-support b python get-pip.p ...
- BZOJ1923: [Sdoi2010]外星千足虫
传送门 高斯消元求解Xor方程. 这个方程很容易换成xor的方程.然后用高斯消元搞就行了. 用bitset实现这个非常方便. //BZOJ 1923 //by Cydiater //2016.11.3 ...
- EditPlus-CN使用总结
EditPlus-CN使用总结 --------------- 注册名:Free User注册码:6AC8D-784D8-DDZ95-B8W3A-45TFA ---------------- 1.如何 ...
- 在Main方法中设置异常的最后一次捕捉
在做Winfrom程序时,有时会遇到一个异常,可是这个异常不知道在什么地方发生的,程序会自动关闭,然后什么也没有了,在网上找到了一种方法,用来捕捉这种异常. 出现这种情况的原因是在程序中某些地方考虑不 ...
- 什么是License
许多混乱就始于你不知道License到底是什么,到底有什么含义.当你对你的产品使用License时,并不意味着你放弃了任何权利,你依然对其拥有原著作权.License只是授予他们于特定权利来使用你的产 ...
- VBA笔记(四)——立即窗口的使用
开启立即窗口 方法一:视图-立即窗口 方法二:组合键<Ctrl+G> Debug.Print 可以在立即窗口打印输出
- 常用vim插件的安装、使用和管理
1.Ctags Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或者其他工具用来快速查找定位源代码中的符号,入变量名,函数名等.比如,tags文件就是Taglist和 ...
- 使用angular.bootstrap() 完成模块的手动加载
之前我们看到使用ng-app指令,可以实现模块的自动加载.现在我们看下,angular中如何手动加载模块.需要使用到angular.bootstrap这个函数. <html> <he ...