在我们开发中很多时候需要让我们的客户从服务器上下载模板等信息,在本人开发时也有遇到,特地在此记录一下,以便下次在用。

思路:在后台接口中,我们以流的方式将数据发送到前端,前端直接利用 <a  href=“后台接口”> 标签请求后台接口。

代码如下:

controller层:

   /*** 下载人才信息服务模板** @param response* @return*/@RequestMapping(value = "/download",method = RequestMethod.GET)@CatchErrpublic ResultMsg<String> downloadTemplate(HttpServletResponse response){ResultMsg<String> resultMsg = new ResultMsg<>();try {personnelInfoManager.downloadTemplate(response);resultMsg = ResultMsg.SUCCESS("下载人才信息服务模板成功!");} catch (IOException e) {e.printStackTrace();resultMsg = ResultMsg.ERROR("下载人才信息服务模板时异常!");}return resultMsg;}
Service层:
    /*** 下载模板* @param response* @return* @throws IOException*/ResultMsg<String> downloadTemplate(HttpServletResponse response) throws IOException;

ServiceImpl层(重要):以流的方式将文件从服务器上下载下来。

/*** 下载模板* @param response* @return* @throws IOException*/@Overridepublic ResultMsg<String> downloadTemplate(HttpServletResponse response) throws IOException{ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();Resource[] resources = resourcePatternResolver.getResources("classpath:/template/personnelInfo.xlsx");Resource resource = resources[0];URI uri = resource.getURI();logger.info(uri.toString());InputStream inputStream = null;OutputStream out = null;try {//根据文件在服务器的路径读取该文件转化为流inputStream = resource.getInputStream();//创建一个Buffer字符串byte[] buffer = new byte[1024];String fileName = "人才信息导入模板.xlsx";//设置文件ContentType类型,这样设置,会自动判断下载文件类型response.setContentType("multipart/form-data");//设置文件头:最后一个参数是设置下载文件名(设置编码格式防止下载的文件名乱码)response.setHeader("Content-Disposition", "attachment;fileName="+new String( fileName.getBytes("UTF-8"), "ISO8859-1" ));out = response.getOutputStream();int b = 0;while (b != -1){b = inputStream.read(buffer);//写到输出流(out)中out.write(buffer,0,b);}return null;}catch (Exception e){e.printStackTrace();return ResultMsg.ERROR("下载人才信息导入模板异常!");}finally {try {inputStream.close();out.close();out.flush();}catch (Exception e){e.printStackTrace();}}}

html页面关键代码:

<form name="form"><table class="form-table"><tr><th>下载导入模板</th><td><a class='btn btn-primary fa fa-arrow-down ng-scope' href="/personnelInfo/download">下载模板</a></td></tr></table>
</form>

最后,因为我把下载路径指向了classpath:xxxx,即下面这段代码:

resourcePatternResolver.getResources("classpath:/template/personnelInfo.xlsx");

所以我们需要将我们的模板放到我们项目的根路径下。如下图:

关于如何从服务器上下载excel、word等一系列的东西相关推荐

  1. 将数据库数据导出到Excel中,并可以在浏览器上下载Excel

    将数据库数据导出到Excel中,并可以在浏览器上下载Excel 附代码: //设置文件保存路径 public static String url ="F:\\Workspase\\BackC ...

  2. C#实现从服务器上下载DLL文件

    C#实现从服务器上下载DLL文件,具体代码如下:   var fullQualifiedPathToDll = Server.MapPath("/") + "/bin/m ...

  3. 以命令方式从ftp服务器上下载和上传文件

    ** 以命令方式从ftp服务器上下载和上传文件 wang ** 1."开始"→"运行",输入"cmd",打开命令提示符: 2.在命令提示符内 ...

  4. Android使用Service从服务器上下载一个安装包的全过程

    前言:在这里完成了一个完整的从服务器上下载数据的实例! 一.我使用的时OkHttp进行网络通信,所以首先在gradle的dependencies中添加如下依赖: compile 'com.square ...

  5. 文件下载:从服务器上下载,自动给下载的PDF添加水印(一)

    javaweb 项目,前端页面点击下载指定文件,后端执行过程. 给文件添加水印方法的代码,放在下一篇:<给指定的PDF添加水印(二)> 从服务器文件下载,自动添加水印 一.从服务器文件下载 ...

  6. 在服务器上下载google云端硬盘文件

    很多论文会将预处理数据和预训练模型保存在Google Drive上,在个人计算机上下载google云端硬盘的文件想必不是什么难事,那么如何在服务器上下载google云端硬盘的文件呢? 工具:gdown ...

  7. mac电脑如何从远程连接的服务器上下载文件

    背景: 疫情期间,在家里写毕业论文,挂着学校的vpn连学校的服务器. 由于最近个人电脑换成mac了,需要从远程服务器上下载文件到自己电脑上. 没用samba,因为我不是服务器管理员,所以一时没办法在服 ...

  8. 【Java用法】使用Java导出word文档的解决方案(适用于从服务器上下载到本地电脑)

    本文目录 一.Controller 二.Service 接口类 三.ServiceImpl 实现类 四.Content-Type 类型与MIME Type类型对照表 最近在做一个word导出功能,需求 ...

  9. 从服务器上下载文件的方法

    有时候需要提供一些文件供用户下载,本文就写了一个支持文件下载的方法,供参考: 例子需要下载的是Excel表格,具体实现:. 封装一个下载方法,方便使用: /*** 下载文件* 创建人:A-bing* ...

最新文章

  1. c++ std::priority_queue优先队列
  2. c语言linux打印运行时间(耗时) gettimeofday()、timeval、<sys/time.h>
  3. mysql 获取倒数第二_如何从MySQL中的表中获取倒数第二条记录?
  4. flink 检查点_Flink检查点和恢复
  5. ghostwriter – 免费开源的跨平台 Markdown 编辑器
  6. JAVA 中一个非常轻量级只有 200k 左右的 RESTful 路由框架
  7. oracle应付模块中的ov,oracle常用dba命令和知识下
  8. window系统电脑进入bios设置的万能通用方法,台式组装机也可以使用。
  9. Android 吉字节问题
  10. Linux相关命令(三)
  11. C语言入门:数字分离
  12. Shell脚本笔记(3)- 变量子串
  13. oracle实验报告4:Oracle数据库模式对象管理(含实验小结)
  14. ROS源代码阅读(9)——DWA算法
  15. HDLBits练习汇总-14-时序逻辑设计测试--状态机(二)
  16. react组件卸载调用的方法_小程序原生引入组件和调用组件的方法 - 一世^浮萍
  17. Java(老白再次入门) - 异常处理
  18. 乔布斯辞世或给苹果竞争对手带来机遇缩小差距
  19. 收藏!2023年全年考证时间表!
  20. html5艺术字怎么插入,word文档怎么插入艺术字和图片

热门文章

  1. c1灯光语言,汽车灯光使用大全与常用灯光语言
  2. 计算增长率,同比写法
  3. ftp服务器怎么提供文件和功能,什么是FTP?FTP有哪些功能?
  4. 邮件服务器一般运行哪些协议,总结电子邮件支持的相关协议:SMTP、POP和IMAP
  5. Kafka生产与消费脚本工具
  6. Vue ul li 列表 最后一个子元素 “不需要列表横线写法”
  7. 【Android系统】Android开机时间分析
  8. 快递鸟代收货款接口API使用技术文档
  9. c语言每日签到_C语言算法,签到问题。C++的标程有了,求个C语言的。附带注释,清楚点。...
  10. PowerPoint小技巧