博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMvc之java文件下载
阅读量:5024 次
发布时间:2019-06-12

本文共 2625 字,大约阅读时间需要 8 分钟。

首先强调,需要下载的文件只能放在项目中的webapp下

 

1、页面的一个超链接,链接到controller

2、controller中的代码:

@RequestMapping("/download")    @ResponseBody        public void downLoadExcelModel(HttpServletRequest request,HttpServletResponse response) throws Exception {         String download = request.getSession().getServletContext().getRealPath("/upload/"); //获取下载路劲         ExcelAndCsvDownload.downLoadFile(moban.csv,csv,download, response);//依次传入需要下载的文件名,文件格式,路径,response参数       }

3、工具类:

package com.common.util;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import javax.servlet.http.HttpServletResponse;public class ExcelAndCsvDownload{        public static boolean downLoadFile(String name,String type,String path,HttpServletResponse response)            throws Exception {            String fileName = name;            String fileType = type;            File file = new File(path+fileName);  //根据文件路径获得File文件            //设置文件类型(这样设置就不止是下Excel文件了,一举多得)            if("pdf".equals(fileType)){               response.setContentType("application/pdf;charset=GBK");            }else if("csv".equals(fileType)){               response.setContentType("application/msexcel;charset=GBK");            }else if("doc".equals(fileType)){               response.setContentType("application/msword;charset=GBK");            }else if("xls".equals(fileType)){                   response.setContentType("application/msexcel;charset=GBK");                }            //文件名            response.setHeader("Content-Disposition", "attachment;filename=\""                + new String(fileName.getBytes(), "ISO8859-1") + "\"");            response.setContentLength((int) file.length());            byte[] buffer = new byte[4096];// 缓冲区            BufferedOutputStream output = null;            BufferedInputStream input = null;            try {              output = new BufferedOutputStream(response.getOutputStream());              input = new BufferedInputStream(new FileInputStream(file));              int n = -1;              //遍历,开始下载              while ((n = input.read(buffer, 0, 4096)) > -1) {                 output.write(buffer, 0, n);              }              output.flush();   //不可少              response.flushBuffer();//不可少            } catch (Exception e) {              //异常自己捕捉                   } finally {               //关闭流,不可少               if (input != null)                    input.close();               if (output != null)                    output.close();            }           return false;        }}

 

转载于:https://www.cnblogs.com/guokai870510826/p/5792777.html

你可能感兴趣的文章
邮件中的样式问题
查看>>
AJAX 状态值与状态码详解
查看>>
php面向对象编程(oop)基础知识示例解释
查看>>
1.在数组中找到与给定总和的配对
查看>>
树的子结构
查看>>
关于根据Build Platform或者OS 加载x86或者x64 dll的问题
查看>>
程序员高效开发的几个技巧
查看>>
js-权威指南学习笔记19.2
查看>>
hexo 搭建博客
查看>>
关于 UIWebView 几个高级用法
查看>>
maven创建的项目中无法创建src/main/java 解决方案
查看>>
华为软件开发云测评报告二:代码检查
查看>>
集合1
查看>>
js 原生 ajax
查看>>
关键词 virtual
查看>>
建造者模式(屌丝专用)
查看>>
UVALive 4730 Kingdom +段树和支票托收
查看>>
[APIO2010]特别行动队
查看>>
[SCOI2016]幸运数字
查看>>
SpringBoot 集成ehcache
查看>>