除了文件的上传我们还需要从磁盘下载

实现文件的下载只要编写一个控制器,完成读写操作和响应头和数据类型的设置就可以了

下面演示的是从G盘imgs文件夹中下载文件

具体代码如下

 package com.cqupt.dayday;

 import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*; /**
* Created by I am master on 2017/5/16.
*/
@Controller
public class ResourceController {
@RequestMapping("/download")
public String download(String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setCharacterEncoding("utf-8");
//返回的数据类型
response.setContentType("application/pdf");
//响应头
response.setHeader("Content-Disposition", "attachment;fileName="
+ fileName);
InputStream inputStream=null;
OutputStream outputStream=null;
//路径
String path ="G:"+ File.separator+"imgs"+File.separator;
byte[] bytes = new byte[2048];
try {
File file=new File(path,fileName);
inputStream = new FileInputStream(file);
outputStream = response.getOutputStream();
int length;
//inputStream.read(bytes)从file中读取数据,-1是读取完的标志
while ((length = inputStream.read(bytes)) > 0) {
//写数据
outputStream.write(bytes, 0, length);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
//关闭输入输出流
if(outputStream!=null) {
outputStream.close();
}
if(inputStream!=null) {
inputStream.close();
}
}
return null;
}
}

用了注解进行描述就不在重复了

在写的过程中遇到的问题:FileNotFoundException

原因:路径不正确

一定要注意路径问题在写的时候

前端代码:

 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<center><h1>Download Page</h1></center>
<a href="download?fileName=B.pdf">B.pdf</a>
</body>
</html>

测试页面:

点击即完成下载

SpringMVC实现从磁盘中下载文件的更多相关文章

  1. .net中下载文件的方法(转)

    .net中下载文件的方法 一.//TransmitFile实现下载      protected void Button1_Click(object sender, EventArgs e)      ...

  2. VSTO学习笔记(四)从SharePoint 2010中下载文件

    原文:VSTO学习笔记(四)从SharePoint 2010中下载文件 上一次我们开发了一个简单的64位COM加载项,虽然功能很简单,但是包括了开发一个64位COM加载项的大部分过程.本次我们来给CO ...

  3. js中使用showModelDialog中下载文件的时候,闪一下后无法下载

    在js中使用showModelDialog中下载文件的时候,会因为showModelDialog自动设置target为_self导致下载文件“只会闪一下”就消失掉 在吧target设置为_blank后 ...

  4. django 中下载文件与下载保存为excel

    一.django 中下载文件 在实际的项目中很多时候需要用到下载功能,如导excel.pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,如nginx,这里我们主要介绍dja ...

  5. java 从网络Url中下载文件 (转)

    http://blog.csdn.net/xb12369/article/details/40543649/ /**       * 从网络Url中下载文件       * @param urlStr ...

  6. 使用curl在命令行中下载文件

    http://m.blog.csdn.net/blog/mayadong7349/7019208 使用curl在命令行中下载文件 linux下curl简单应用详解 http://blog.sina.c ...

  7. java 从网络Url中下载文件

    转自:http://blog.csdn.net/xb12369/article/details/40543649 /** * 从网络Url中下载文件 * @param urlStr * @param ...

  8. ajax请求过程中下载文件在火狐下的兼容问题

    项目中碰到的问题,记录如下. 需求很简单,点击一个文件链接下载该文件,同时向后台发送请求.需求很常见,用户点击下载后通常要进行下载量的统计,统计的话可以利用 script标签 或者 img标签(图片p ...

  9. 如何在启用JWT Token授权的.NET Core WebApi项目中下载文件

    背景 前几天,做项目的时候遇到一个文件下载的问题.当前系统是一个前后端分离的项目,前端是一个AngularJs项目, 后端是一个.NET Core WebApi项目.后端的Api项目使用了Jwt To ...

随机推荐

  1. Xpath做数据解析

    xpath是一个路径表达式, xpath学习 (1)xpath节点 在XPath中,有七种类型的节点:元素,属性,文本,命名空间,处理指令,注释以及文档节点:XML文档是被作为节点树来对待的.树的根被 ...

  2. 完整的Django入门指南学习笔记2

    part2: 前沿 在第一节中,我们安装了项目所需要的一切:Python3.6以及在虚拟环境中运行的Django2.0,这部分教程继续在项目上编写代码. 开始写代码前,先讨论下项目的相关背景知识,然后 ...

  3. 封装jsonp

    1.写一个类封装jsonp: jsonp(url, params, success, funName)     参数url:请求地址     参数params:请求数据,可以是json对象,或形如&q ...

  4. 【MySQL】【1】表中存在重复记录,删除保留其中一条

    --删除题库(TABLE_Q )中,标题(TITLE )和类型(TYPE )都相同的数据,仅保留ID最小的一条 DELETE TABLE_Q FROM TABLE_Q, ( ) T2 WHERE TA ...

  5. 1.两数之和(Two Sum) C++

    暴力法可解决,速度很慢. 解决办法:哈希表 知识点: map的构造 遍历map使用迭代器,判断条件 插入 pair<int,int> 寻找key是否存在 class Solution { ...

  6. 集成学习二: Boosting

    目录 集成学习二: Boosting 引言 Adaboost Adaboost 算法 前向分步算法 前向分步算法 Boosting Tree 回归树 提升回归树 Gradient Boosting 参 ...

  7. ActiveMQ Advisory Message

    http://activemq.apache.org/advisory-message.html ActiveMQ broker 内部维持了一些 topic,保存了一些系统信息,客户端可以订阅这些 t ...

  8. Laravel框架如何去除URL中的/public

    laravel/server.php改名为index.php 并且将public目录下的.htaccess拷贝到Larvael根目下 再访问 如有配置不成功的请加群

  9. laravel中的storePublicly对上传的文件设置上传途径

    public function imgeUpload(Request $request) { //生成的文件名是md5随机的文件名字 //$path=$request->file('wangEd ...

  10. Uboot代码分析

    (1)确定链接脚本文件:uboot根目录下Makefile中的LDSCRIPT宏值,就是指定链接脚本(如:arch/arm/cpu/u-boot.lds)路径用的.(2)从脚本文件找入口: 在链接脚本 ...