java实现文件的下载

系统日志的获取不可能每次都登录服务器,所以在页面上能够下载系统运行的日志是必须的

如何来实现日志的下载,这样的一个功能

 前端我们用到的是window.open(...)这样可以发送一个get请求到后台

 后台接收到get请求之后,如何实现对文件的下载

	@ResponseBody@RequestMapping("downlogsfile")public void downlogsfile(HttpServletResponse response,String filename) throws IOException {logger.info("**************下载日志相关的日志信息{}*****************",filename);response.setCharacterEncoding("UTF-8");response.setContentType("text/plain;charset=GBK");String path =configService.getByConfigValueByName("LOGPATH");String filepath = path + "/" + filename;logger.info(filepath);File file = new File(filepath);if (file.exists()) {logger.info("找到相关的日志文件:{}", filepath);DownLoadUtils.downloadtxt(response, file);} else {logger.info("文件不存在");}}

关键是DownLoadUtils.downloadtxt(response, file);

	public static void downloadtxt(HttpServletResponse res,File file) throws IOException {long length = file.length();res.addHeader("Content-Length", String.valueOf(length));res.addHeader("Content-Type","text/plain; charset=utf-8");res.setHeader("Content-Disposition","attachment;filename="+file.getName());OutputStream outputStream = res.getOutputStream();byte[] buff = new byte[1024];BufferedInputStream bis = null;FileInputStream fileInputStream=new FileInputStream(file);bis = new BufferedInputStream(fileInputStream);int i = bis.read(buff);while (i != -1) {outputStream.write(buff, 0, buff.length);outputStream.flush();i = bis.read(buff);}bis.close();fileInputStream.close();outputStream.close();}

这个里面res.setHeader很重要

res.addHeader("Content-Type","text/plain; charset=utf-8");

text/plain  纯文本的格式,并且设置编码
res.setHeader("Content-Disposition","attachment;filename="+file.getName());

"Content-Disposition","attachment;filename="+file.getName()

实现下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/34797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu中redis+mysql安装使用

pip -V 回车(大写V):python包库安装路径 python -m site: python查找路径 1、redis ubuntu安装redis System has not been booted with systemd as init system (PID 1). Cant operate;该问题是systemctl start redis报错&#…

ZLMediaKit(webrtc)在linux上(CentOS7)部署与启动

一.ZLMediaKit(webrtc)在CentOS7部署与启动 # 1. 卸载旧版本 yum remove git # 2. 安装 yum 源的 Git 版本 yum install -y git # 3. 查看版本 git version # 输出 git version 1.8.3.1配置全局环境变量 # 1. 编辑配置文件 vim /etc/profile # 2. 在 /etc/profile 文件中末尾…

用 Rufus 制作 Ubuntu 系统启动盘时,选择分区类型为MBR还是GPT?

当使用 Rufus 制作 Ubuntu 系统启动盘时,您可以根据您的需求选择分区类型,MBR(Master Boot Record)还是 GPT(GUID Partition Table)。 MBR 是传统的分区表格式,适用于大多数旧版本的操作系统和旧…

2023/08/13_____JMM JAVA Memory Model JAVA内存模型

JMM JAVA Memory Model java内存模型 作用:缓存一致性协议,用于定义数据读写的规则(遵守,找到这个规则) JMM定义了线程2工作内存和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main …

TLS协议

目录 什么是TLS协议? TLS的基本流程? 两种密钥交换算法? 基于ECDHE密钥交换算法的TLS握手过程? 基于RSA密钥交换算法的TLS握手过程? 基于RSA的握手和基于ECDHE的握手有什么区别? 什么是前向保密&…

tp6 v3微信退款

/*** Notes:退款* param $out_trade_no 支付时候订单号(order表 original_bn)两个参数选一个这个要选对* param $out_refund_no 退款订单号* param $total 订单金额* param $refund 退款金额* Time: 2023-08-10*/public function refundMoney($out_trade…

oracle的异常处理

oracle提供了预定义例外、非预定义例外和自定义例外三种类型。其中: l预定义例外用于处理常见的oracle错误; l非预定义例外用于处理预定义所不能处理的oracle错误; l自定义例外处理与oracle错误无关的其他情况。 Oracle代码编写过程中&am…

nginx反向代理与负载均衡

负载均衡依靠反向代理实现。nginx的代理分为七层代理与四层代理: 七层代理:七层代理的就是http请求和响应。七层代理是最常用的反向代理方式,只能配置在nginx配置文件的http模块。而且配置方法名称:upstream模块,不能写…

提升效率!Go语言开发者不可错过的必备工具集合!

🌷🍁 博主猫头虎 带您 Go to Golang Language.✨✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1…

UDP数据报网络编程(实现简单的回显服务器,客户端)

回显服务器表示客户端发的是啥,服务器就返回啥,主要是为了熟悉UDP数据报网络编程的基本步骤 对于程序的所有分析都写到了代码上 UDP回显服务器代码 package UdpEcho;import java.io.IOException; import java.net.DatagramPacket; import java.net.Dat…

ClickHouse查看执行计划(EXPLAIN语法)

1.EXPLAIN 语法示例 EXPLAIN [AST | SYNTAX | QUERY TREE | PLAN | PIPELINE | ESTIMATE | TABLE OVERRIDE] [setting value, ...] [ SELECT ... | tableFunction(...) [COLUMNS (...)] [ORDER BY ...] [PARTITION BY ...] [PRIMARY KEY] [SAMPLE BY ...] [T…

途乐证券-最准确的KDJ改良指标?

KDJ目标是技术剖析的一种重要目标之一,它是利用随机目标(%R)发展而来的,是一种反映商场超买和超卖状况的买卖目标。KDJ目标由快线(K线)、慢线(D线)和随机值(J线&#xff…

RestTemplate HTTPS请求忽略SSL证书

问题描述 使用RestTemplate发送HTTPS请求的时候,出现了这样的一个问题: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification …

MySQL多表查询

1.创建student和score表 创建score表 2.为student表和score表增加记录 向student表插入记录的INSERT语句如下: 向score表插入记录的INSERT语句如下: 1.查询student表的所有记录 2.查询student表的第2条到4条记录 3.从student表查询所有学生的学号&#…

2023最新影视泛目录系统,苹果cms最新下载地址

影视泛目录系统是指一种集成了电影、电视剧、综艺节目、动漫等多种影视资源资源的系统,其目的是为用户提供一个方便快捷的影视资源检索、浏览、分享、评论的平台。该系统通过对影视资源进行分类、标签化、评分等方式,为用户提供更加精准的检索和推荐服务…

C#多线程学习 生产者和消费者

前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发…

mousedown拖拽功能(vue3+ts)

因为项目有rem适配,使用第三方插件无法处理适配问题,所有只能自己写拖拽功能了 拖拽一般都会想到按下,移动,放开,但是本人亲测,就在div绑定一个按下事件就行了(在事件里面写另外两个事件&#x…

爬虫ip池越大越好吗?

作为一名资深的程序员,今天我要给大家分享一些关于爬虫ip池的知识。关于ip代理池的问题,答案是肯定的,池子越大越好。下面跟我一起来盘点一下ip池大的好处吧! 1、提高稳定性 爬虫ip池越大,意味着拥有更多可用的爬虫ip…

「C/C++」C/C++搭建程序框架

✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C」C/C程序设计「Win」Windows程序设计「DSA」数据结构与算法「File」数据文件格式 目录 1. 分离职…

Flume原理剖析

一、介绍 Flume是一个高可用、高可靠,分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制&…