上传与下载

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. iOS-绘图

    0 CGContextRef context = UIGraphicsGetCurrentCont ext(); 设置上下文  1 CGContextMoveToPoint 开始画线  2 CGCon ...

  2. ssh key生成

    Mac电脑用终端生成SSH key 访问自己的Github 字数684 阅读427 评论4 喜欢15 前言:最近有不少刚刚使用github管理代码的开发者或者新手码农在网上 问我如何关联自己的gith ...

  3. windows下python的web环境搭建使用(观看Backbone的教程有感)

    pip安装a 下载 get-pip.py (https://pip.pypa.io/en/latest/installing/#python-os-support b python get-pip.p ...

  4. BZOJ1923: [Sdoi2010]外星千足虫

    传送门 高斯消元求解Xor方程. 这个方程很容易换成xor的方程.然后用高斯消元搞就行了. 用bitset实现这个非常方便. //BZOJ 1923 //by Cydiater //2016.11.3 ...

  5. EditPlus-CN使用总结

    EditPlus-CN使用总结 --------------- 注册名:Free User注册码:6AC8D-784D8-DDZ95-B8W3A-45TFA ---------------- 1.如何 ...

  6. 在Main方法中设置异常的最后一次捕捉

    在做Winfrom程序时,有时会遇到一个异常,可是这个异常不知道在什么地方发生的,程序会自动关闭,然后什么也没有了,在网上找到了一种方法,用来捕捉这种异常. 出现这种情况的原因是在程序中某些地方考虑不 ...

  7. 什么是License

    许多混乱就始于你不知道License到底是什么,到底有什么含义.当你对你的产品使用License时,并不意味着你放弃了任何权利,你依然对其拥有原著作权.License只是授予他们于特定权利来使用你的产 ...

  8. VBA笔记(四)——立即窗口的使用

    开启立即窗口 方法一:视图-立即窗口 方法二:组合键<Ctrl+G> Debug.Print 可以在立即窗口打印输出

  9. 常用vim插件的安装、使用和管理

      1.Ctags Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或者其他工具用来快速查找定位源代码中的符号,入变量名,函数名等.比如,tags文件就是Taglist和 ...

  10. 使用angular.bootstrap() 完成模块的手动加载

    之前我们看到使用ng-app指令,可以实现模块的自动加载.现在我们看下,angular中如何手动加载模块.需要使用到angular.bootstrap这个函数. <html> <he ...