SpringBoot实现文件下载

SpringBoot实现文件下载在写 java 的文件下载的时候一直抛出异常 getOutputStr hasalreadybe 抛出异常 getOutputStr hasalreadybe 直到使用了下面的方法 稿源周报 excel 表格下载 ret

在写java 的文件下载的时候一直抛出异常

getOutputStream() has already been called for this response

抛出异常getOutputStream() has already been called for this response

直到使用了下面的方法:

 / * 稿源周报excel表格下载 * @return */ @RequestMapping(value = "/downExcel", method = RequestMethod.GET, produces = "application/json;charset=UTF-8") @ResponseBody public String downExcel(HttpServletResponse response) throws UnsupportedEncodingException { LocalDate end = LocalDate.now(); LocalDate start = end.minusDays(14); String filename = "稿源抓取周报-" + end.format(DateTimeFormatter.ISO_DATE) + ".xlsx"; String filepath = "files/" + filename; writeExcelFile(start, end, filepath); // 如果文件名不为空,则进行下载 if (filename != null) { File file = new File(filepath); // 如果文件存在,则进行下载 if (file.exists()) { // 配置文件下载 response.setHeader("content-type", "application/octet-stream"); response.setContentType("application/octet-stream"); // 下载文件能正常显示中文 response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8")); // 实现文件下载 byte[] buffer = new byte[1024]; FileInputStream fis = null; BufferedInputStream bis = null; try { fis = new FileInputStream(file); bis = new BufferedInputStream(fis); OutputStream os = response.getOutputStream(); int i = bis.read(buffer); while (i != -1) { os.write(buffer, 0, i); i = bis.read(buffer); } System.out.println("Download successfully!"); return "successfully"; } catch (Exception e) { System.out.println("Download failed!"); return "failed"; } finally { if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } } return ""; } 
  $.ajax({        url:"/down/downExcel",        type:"GET",        dataType:"json",        success:function(result){ }}); 

换成:

window.location.href="/down/downExcel";

OK!

SpringBoot实现文件下载

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229380.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午4:50
下一篇 2026年3月16日 下午4:51


相关推荐

  • PHP CI框架调试开启报错信息方法「建议收藏」

    PHP CI框架调试开启报错信息方法

    2022年2月8日
    81
  • UI自动化平台_ui自动化是什么意思

    UI自动化平台_ui自动化是什么意思这里写自定义目录标题Pycharm创建Django项目讲解一、新建一个django项目1、Location:是项目路径;2、Projectinterceptor:是选择使用的python版本,除了电脑中已经暗转过的python,也可以选择新的版本(新版本pycharm会自动下载);3、Templatelanguage:是模板语言,我们选择django,其他的不用管;4、Templatefolder:是模板路径,默认是templates;5、Applicationname:是应用程序名称

    2025年6月14日
    4
  • springboot项目导入idea中如何部署启动_idea怎么导入javaweb项目

    springboot项目导入idea中如何部署启动_idea怎么导入javaweb项目最近公司要求开发工具要用Idea,作为一个eclipse的老员工,记录一下Idea中遇到的坑刚开始用Idea从Git上导入一个项目时,遇到了很多坑,网上有很多方法,我不多做介绍。只说明一下我使用的方法。1.本地新建一个文件夹,从git上导入项目到本地文件夹。(git的相关使用请自行百度,这里只讲Idea的使用方法)2.将这个文件夹直接拖到Idea的启动图标上。或者,从Ide…

    2022年10月10日
    3
  • DDOS 攻击防御-SYN 洪水攻击

    DDOS 攻击防御-SYN 洪水攻击本文章仅供学习交流一 环境配置攻击机 kali2021 1ip 192 168 0 255 255 0 靶机 contos7 6ip 192 168 0 255 255 0 条件 两机器要在同一局域网中 能相互访问 contos 开启 apche 服务二 信息收集 1 Traceroute 命令也可以对路由进行跟踪 2 使用 nmap 扫描 win7 进行信息收集 nmap 目标 ipexclude 排除目标 ip 扫描时排除指定 ipnmap iL 目标文

    2026年3月19日
    1
  • Windows 10 本地 IIS Web服务器搭建

    Windows 10 本地 IIS Web服务器搭建IIS服务器搭建启用功能①右击我的电脑点击属性,进入windows10控制面板。然后点击控制面板②点击进入程序和功能,然后点击启用或关闭windows功能,打开windows功能窗口,选择InternetInformationServices选项,将里面的内容全部勾选。如图:③勾选完成后,点击确定按钮,windows自动安装IIS功能,完成…

    2022年5月11日
    53
  • C++ eigen_c++第三方库

    C++ eigen_c++第三方库前言Eigen就是一个线性代数的C++库。它对矩阵(MatrixMatrix)和向量(VectorVector)等相关线性代数的运算操作进行了比较系统的实现。一、矩阵1.定义矩阵模板函数共包含六个参数template<typename_Scalar,int_Rows,int_Cols,int_Options,int_MaxRows,int_MaxC…

    2022年10月19日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号