当前位置: 首页 > news >正文

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.lryc.cn/news/120215.html

相关文章:

  • 分享Python技术下AutojsPro7云控代码
  • 【Linux】网络通信
  • 【mysql】—— 表的约束
  • jeecgboot 登录成功默认其他路由
  • 【1572. 矩阵对角线元素的和】
  • GaussDB 开发篇+Java调用JDBC访问openGauss数据库
  • 钕铁硼永磁材料基本概念
  • 2005-2020年280个地级市绿色全要素生产率测算原始数据
  • 电流的测量(反馈电流表)
  • 白帽黑帽与linux安全操作
  • 【TypeScript】进阶之路语法细节,类型和函数
  • 每日一题 611有效三角形的个数(相向双指针)
  • Flink源码之JobMaster启动流程
  • C#,数值计算——抛物线插值与Brent方法(Parabolic Interpolation and Brent‘s Method)的计算方法与源程序
  • 基于Selenium技术方案的爬取界面内容实践
  • 线程记录(1)
  • requests
  • Python 监控 Windows 服务
  • ELK中grok插件、mutate插件、multiline插件、date插件的相关配置
  • 【C#】静默安装、SQL SERVER静默安装等
  • 在vue3中定义组件的5种方式
  • 算法训练营题目,忘了第几天了
  • 蓝桥杯-统计子矩阵
  • 在线预览Word、Excel、PowerPoint等文件
  • 准确预测极端降水,哥伦比亚大学推出升级版神经网络 Org-NN
  • 【数据结构】反转链表、链表的中间节点、链表的回文结构(单链表OJ题)
  • Python爬虫-抓取的目标数据为#x开头,怎么解决?
  • 短视频账号矩阵系统/技术开发搭建私有部署
  • 光致发光二极管光源——荧光效率检测系统
  • 【手撕C语言】多线程