上传与下载

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. html5定位getLocation()

    HTML5 Geolocation API 用于获得用户的地理位置. 如果用户不允许定位,那么用户信息是不可用的. 获取用户的位置:getCurrentPosition() 返回数据如下 返回用户当前 ...

  2. Leetcode 69. Sqrt(x)

    Implement int sqrt(int x). 思路: Binary Search class Solution(object): def mySqrt(self, x): "&quo ...

  3. 定制sqlmap tamper脚本

    前言 渗透测试过程中遇到注入点常常丢到sqlmap中进行测试,假如网站有waf,sqlmap便无法直接注入了. 测试 在测试某个项目的过程中,一个页面的aid参数,习惯性的提交 and 1=1发现直接 ...

  4. Linux and symmetric multiprocessing

    没空看,暂时留着 http://www.ibm.com/developerworks/library/l-linux-smp/

  5. 利用django创建一个投票网站(二)

    创建你的第一个 Django 项目, 第二部分 这一篇从第一部分(zh)结尾的地方继续讲起.本节我们将继续写 Web 投票应用,并主要关注 Django 提供的自动生成的管理页面(admin site ...

  6. 1 python大数据挖掘系列之基础知识入门

    preface Python在大数据行业非常火爆近两年,as a pythonic,所以也得涉足下大数据分析,下面就聊聊它们. Python数据分析与挖掘技术概述 所谓数据分析,即对已知的数据进行分析 ...

  7. CentOS 7.1编译安装PHP7

    原文: https://typecodes.com/web/centos7compilephp7.html?utm_source=tuicool&utm_medium=referral 1 创 ...

  8. webpack使用优化(基本篇)

    转自:https://github.com/lcxfs1991/blog/issues/2 前言 本文不是webpack入门文章,如果对webpack还不了解,请前往题叶的Webpack入门,或者阮老 ...

  9. JS-时间函数

    /** * 日期范围工具类 */ var dateRangeUtil = (function () { /*** * 获得当前时间 */ this.getCurrentDate = function ...

  10. Yii2 认证实现原理和示例

    Yii的用户认证分为两个部分,一个是User组件,负责管理用户认证状态的,包括登录,登出,检测当前登录状态等,源文件位于vender/yiisoft/yii2/web/User.php.另一个是实现接 ...