实现文档的下载

前端页面

1.在前端页面中访问后端控制层方法,传值(此处无需传参数)

//下载Excel模板   监听table中的toolbar    table中必须定义 lay-filter='downloadAdjust'table.on('toolbar(downloadAdjust)',function (obj) {downloadTemplate();});function downloadTemplate(){var form3 = $("<form>")form3.attr("id","downInfoId");form3.attr("action","information/downloadAiBalanceWholeAdjust31");form3.attr("method","post");var input = $("<input>");input.attr("style","display:none");input.attr("name","id");input.attr("value","05009b73-5733-4b9d-b37f-6ca6f7ae2e38");//跨模块下载对应的信息var input2=$("<input>");input2.attr("type","hidden");input2.attr("name","accesstoken");input2.attr("value",layui.data('mhs').accesstoken);$("body").append(form3);form3.append(input);form3.append(input2);form3.submit();$("#downInfoId").remove();}

2.在控制层中调用下载的方法,传送对应的参数值

@PostMapping("/downloadAiBalanceWholeAdjust31")@ResponseBodypublic void downloadAiBalanceWholeAdjust31(@RequestParam("id") String id, HttpServletResponse response) {//SecurityContext.getCurrentUser().getDatarange():获取用户标识,目的是为了拼接完整的文件名称,根据实际而定String fileName="wholeNetAdjustImport_"+SecurityContext.getCurrentUser().getDatarange()+".xls";String download=downloadPath+fileName;//可到达,存在的一个文件对象    file.getName():下载的文件名称File file = new File(download);logger.info("download="+download);logger.info("file.getName()="+file.getName());localSave.downloadFile(file, file.getName(), response);}

3.实现下载的主要代码

public boolean downloadFile(File file,String fileName,HttpServletResponse response) {// 如果文件存在,则进行下载if (file.exists()) {// 实现文件下载byte[] buffer = new byte[1024];FileInputStream fis = null;BufferedInputStream bis = null;try {// 配置文件下载response.setHeader("content-type", "application/octet-stream");response.setContentType("application/octet-stream");// 下载文件能正常显示中文response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));Long fileSize = file.length();response.addHeader("Content-Length", fileSize.toString());//加上设置大小下载下来的.xlsx文件打开时才不会报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃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);}return true;} catch (Exception e) {logger.error("DownloadFile Error:", e);return false;} finally {if (bis != null) {try {bis.close();} catch (IOException e) {logger.error("BufferedInputStream Unclosed:", e);}}if (fis != null) {try {fis.close();} catch (IOException e) {logger.error("FileInputStream Unclosed:", e);}}}}return false;
}

使用Java实现文档的下载(Excel,Word文档等)相关推荐

  1. java word文档生成_java生成word文档

    java生成word文档有多种方式: 1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁.使用Jacob自带的DLL动态链接库,并通过JNI的方式实现 ...

  2. 实现vue页面下载成word文档

    首先需要两个js文件,jquery.wordexport.js 和 FileSaver.js,源码放在下面 // jquery.wordexport.jsif (typeof jQuery !== ' ...

  3. python docx 合并文档 图片_Python合并word文档制作电子书

    需求: 将某大V公众号文章全部下载,整理成合集,并整理成电子书进行阅读. 以冯大辉老师公众号[小道消息]为例 实现步骤 一.批量下载公众号文章 使用 WeChatDownloadv20200423 工 ...

  4. Word电子扫描仪 word文档转换为图片Pdf,Word文档扫描成Pdf,word文档加密 word转图片 word转pdf

    Word文档转换为图片Pdf,Word文档扫描成Pdf Word转换为图片Pdf 1.        Word转换为Pdf,程序很多,但转换后的Pdf,还可以复制,虽可以加密禁止复制,但市场上太多的P ...

  5. 【Java wrod文档导出 返回浏览器下载读取word文档】文档流转IO流

    在工作当中会有很多奇奇怪怪的需求 比如把数据库数据 导出word文档,在此之前发表过一篇 导出ecxle表格的文章,经过查询资料 发现还是很容易实现的 . 我们一共可以分为两个部分 一.把数据库的数据 ...

  6. JAVA实现Freemarker生成动态数据的Word文档下载到浏览器

    使用的jar包版本:freemarker-2.3.28.jar 使用开发工具:idea 1. 创建模板: 新建一个word文档,打开后编辑成想要的格式 动态数据替换成${xxx},如果是多条集合用${ ...

  7. JAVA调用PageOffice在线打开、编辑Word文档

    普通的MS Office Word只能在本地磁盘上打开和编辑保存,这使得程序员在开发项目时受到很多的约束,许多的功能无法实现或者无法达到理想的效果. 下面我就简单的和大家分享一下如何实现Word文档的 ...

  8. Java Web项目中使用Freemarker生成Word文档

    Web项目中生成Word文档的操作屡见不鲜,基于Java的解决方案也是很多的,包括使用Jacob.Apache POI.Java2Word.iText等各种方式,其实在从Office 2003开始,就 ...

  9. java实现导出内容不固定的word文档

    之前遇到过一个需求,需要导出一个word的周报,周报的内容是可变,然后网上找了下方法,下面摘抄一种方便的实现手段: Java用freemarker导出word 一.模板的制作 先用Word做一个模板, ...

  10. java合并word_java实现合并多个word文档 且可换页 实例代码(基于docx4j)

    org.docx4j/docx4j/ Maven依赖写法 Maven下载jar包 org.docx4j docx4j 3.1.0 实例代码: package com.tourMarket.tools; ...

最新文章

  1. 解决使用mybatis分页插件PageHelper的一个报错问题
  2. Linux下运行java DES解密失败,报javax.crypto.BadPaddingException:Given final block not properly padded
  3. 用实例说明Spark stage划分原理
  4. 从物联网设备生命周期理解Apple Homekit框架
  5. Linux服务器Zookeeper+Dubbo环境搭建
  6. 【自动驾驶】9.分布式通信技术之发布订阅,干货满满
  7. python grpc 并发_用Python进行gRPC接口测试(二)
  8. boost::math::chi_squared用法的测试程序
  9. ASP.net 1.1 中相对路径转换为绝对路径
  10. 安卓总线传输协议常用关键词
  11. element子组件中的校验_Salesforce LWC学习(十六) Validity 在form中的使用浅谈
  12. OS X 使用技巧——轻松地调整窗口大小
  13. html自动播放auto,为移动而生的 HTML 属性autocapitalize和autocorrect
  14. 阿里 mysql cluster_MySQL Cluster集群安装及使用-阿里云开发者社区
  15. 【文献阅读】Densely Connected Convolutional Networks-best paper-CVPR-2017
  16. PHP的HashTable实现
  17. php 数组的深度,有没有办法找出PHP数组的“深度”?
  18. 帮助文档或使用说明Chm文档打开后,目录都在,内容为空白,如何解决?
  19. 自动化部署工具Fabric简介
  20. Terminal终端命令(全)

热门文章

  1. 小米Air 安装ubuntu16.04 填坑篇
  2. Linux内核驱动开发-USB热插拔信息调取
  3. 天鹅是白天的月亮(转)
  4. 微软2022校招福袋揭秘!
  5. HTML5+CSS大作业——彭于晏明星(15页) _网页设计期末作业
  6. 机器学习初体验(傻瓜拖拽式)
  7. AI公司进入倒闭潮,5种公司最易“被倒闭”?(下)
  8. 艾棣维欣联合INOVIO开展新冠DNA疫苗全球III期临床试验;陆道培医疗与辉瑞达成合作 | 医药健闻...
  9. Linux高级查询命令
  10. 微信小程序哪个能唱歌_微信K歌最实用的小程序有哪些?求推荐几个有意思的!...