SpringMVC实现从磁盘中下载文件

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

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

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

具体代码如下

 1 package com.cqupt.dayday;
 2
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 import java.io.*;
 9
10 /**
11  * Created by I am master on 2017/5/16.
12  */
13 @Controller
14 public class ResourceController {
15     @RequestMapping("/download")
16     public String download(String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
17         response.setCharacterEncoding("utf-8");
18         //返回的数据类型
19         response.setContentType("application/pdf");
20         //响应头
21         response.setHeader("Content-Disposition", "attachment;fileName="
22                 + fileName);
23         InputStream inputStream=null;
24         OutputStream outputStream=null;
25         //路径
26         String path ="G:"+ File.separator+"imgs"+File.separator;
27         byte[] bytes = new byte[2048];
28         try {
29             File file=new File(path,fileName);
30             inputStream = new FileInputStream(file);
31             outputStream = response.getOutputStream();
32             int length;
33             //inputStream.read(bytes)从file中读取数据,-1是读取完的标志
34             while ((length = inputStream.read(bytes)) > 0) {
35                 //写数据
36                 outputStream.write(bytes, 0, length);
37             }
38         } catch (FileNotFoundException e) {
39             e.printStackTrace();
40         } catch (IOException e) {
41             e.printStackTrace();
42         }finally {
43             //关闭输入输出流
44             if(outputStream!=null) {
45                 outputStream.close();
46             }
47             if(inputStream!=null) {
48                 inputStream.close();
49             }
50         }
51         return null;
52     }
53 }

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

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

原因:路径不正确

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

前端代码:

 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 2 <html>
 3 <head>
 4     <title>Title</title>
 5 </head>
 6 <body>
 7       <center><h1>Download Page</h1></center>
 8       <a href="download?fileName=B.pdf">B.pdf</a>
 9  </body>
10 </html>

测试页面:

点击即完成下载

时间: 2024-10-06 20:45:25

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

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

原文:VSTO学习笔记(四)从SharePoint 2010中下载文件 上一次我们开发了一个简单的64位COM加载项,虽然功能很简单,但是包括了开发一个64位COM加载项的大部分过程.本次我们来给COM加载项添加一些功能:从SharePoint 2010的文档库中下载一个Excel文档到本地. 示例代码下载 本系列所有示例代码均在 Visual Studio 2010 Ultimate RC + Office 2010 Professional Plus Beta x64 上测试通过. 1.首先

java 从网络Url中下载文件

转自:http://blog.csdn.net/xb12369/article/details/40543649 /** * 从网络Url中下载文件 * @param urlStr * @param fileName * @param savePath * @throws IOException */ public static void downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOExcepti

GridVIew中下载文件的方法探讨,方法(7)最佳。

(1)使用Button下载 在GridView属性中添加: OnRowCommand="GridView1_RowCommand" 在GridView的<Column>中添加: <asp:ButtonField runat="server" Text="下载" HeaderText="下载" ButtonType="Button" CommandName="DownLoad_Cl

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

一.django 中下载文件 在实际的项目中很多时候需要用到下载功能,如导excel.pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,如nginx,这里我们主要介绍django中的文件下载. 1.前端 实现方式:a标签+响应头信息(当然你可以选择form实现) <div class="col-md-4"><a href="{% url 'download' %}" rel="external nofollow

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

项目中碰到的问题,记录如下. 需求很简单,点击一个文件链接下载该文件,同时向后台发送请求.需求很常见,用户点击下载后通常要进行下载量的统计,统计的话可以利用 script标签 或者 img标签(图片ping) 的跨域能力,将它们的 src 属性指向统计地址,但是这次用了 ajax 进行统计,遂出现了这个问题. demo 代码如下: 复制代码<a id="a" href="http://c758482.r82.cf2.rackcdn.com/Sublime Text 2.

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

背景 前几天,做项目的时候遇到一个文件下载的问题.当前系统是一个前后端分离的项目,前端是一个AngularJs项目, 后端是一个.NET Core WebApi项目.后端的Api项目使用了Jwt Token授权,所以每个Api请求都需要传递一个Bearer Token. 这一切都看起来理所当然,但是当需要从WebApi下载文件的时候,出现了问题.以前下载文件的时候,我们可以在Javascript中使用window.open('[文件下载Api]')的方式下载文件,但是这个方法不能接收Bearer

scrapy中下载文件和图片

下载文件是一种很常见的需求,例如当你在使用爬虫爬取网站中的图片.视频.word.pdf.压缩包等的时候 scrapy中提供了FilesPipeline和ImagesPipeline,专门用来下载文件和图片: 我们其实可以把这两个item pipeline看成是特殊的下载器,用户使用的时候只需要通过item的一个特殊的字段就可以将要下载的文件或者图片的url传递给它们,它们会自动将文件或者图片下载到本地,并将下载的结果信息存入到item的另一个特殊的字段,方便用户在导出文件的时候查阅 FilesP

python 通过urllib模块在svn中下载文件

#_*_coding:utf-8_*_ import urllib def Schedule(a,b,c): ''' a:已经下载的数据块 b:数据块的大小 c:远程文件的大小 ''' per = 100.0 * a * b / c if per > 100: per = 100 print "%.2f%%"% per f=file('a.txt')#文件路径保存for i in f.readlines(): c=i.strip().split('/') b='/Python27

asp.net中下载文件的问题

今天解决web的文件下载问题,下载的方法网上很多,不过我的下载有点特殊: 1.下载按钮在gridview中,是模板列的linkButton: 2.使用了ajax控件: 所以,在下载时总是报错,通过查找资料,解决方法如下: 1.先说ajax控件的问题: 如果下载按钮在ajax控件上,需要添加Triggers节点,如下: aspx: <asp:UpdatePanel ID="UpdatePanel3" runat="server"> <ContentT