上传与下载

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文件上传和下载的更多相关文章

  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. python读取caffemodel文件

    caffemodel是二进制的protobuf文件,利用protobuf的python接口可以读取它,解析出需要的内容 不少算法都是用预训练模型在自己数据上微调,即加载"caffemodel ...

  2. word中表格加粗某一行

    选中表格后选择线条粗细. 然后重新绘制一遍就行了.

  3. 一道javascript数组操作题

    题目如下: var arr = ['100px','abc'-6,[],-98765,34,-2,0,'300',,function(){alert(1);}, null, document, [], ...

  4. .NET开发人员值得关注的七个开源项目 .

    NET开发人员值得关注的七个开源项目 软近几年在.NET社区开源项目方面投入了相当多的时间和资源,不禁让原本对峙的开源社区阵营大吃一惊,从微软.NET社区中的反应来看,微软.NET开发阵营对开源工具的 ...

  5. ig WebDataGrid清除选中行

    EnableViewState="false" gridID.Behaviors.Selection.SelectedRows.Clear();

  6. canvas变幻曲线

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. Ubuntu14.04安装python3.5

    Ubuntu14.04系统会自带python2.7,请不要卸载它,不同版本的Python可以共存. #sudo add-apt-repository ppa:fkrull/deadsnakes #su ...

  8. 前端React开发入门笔记

    什么是React React是一个JavaScript库,是由FaceBook和Instagram开发的,主要用于用户创建图形化界面. Hello world <!DOCTYPE html> ...

  9. 分享公司Entity与DTO之间数据拷贝的方法

    主题 最早以前自学java web的时候,数据库查询出来一个Entity对象(CMP对象).就直接传给前台展示了.并没有用到DTO对象,开始并没有觉得有什么不好...后来发现还是需要一些DTO对象来专 ...

  10. Bubble Cup 8 finals H. Bots (575H)

    题意: 简单来说就是生成一棵树,要求根到每个叶子节点上的路径颜色排列不同, 且每条根到叶子的路径恰有n条蓝边和n条红边. 求生成的树的节点个数. 1<=n<=10^6 题解: 简单计数. ...