一、前台通过a标签打开接口,传入文件id

<a href="/cdc/announcement/downloadFile/1">下载</a>

二、后台接收id,查找对应文件,进行下载

    @RequestMapping(value = "downloadFile/{id}", method = RequestMethod.GET)@PreAuthorize("hasAuthority('view')")@ResponseBodypublic void downloadFile(HttpServletRequest req, HttpServletResponse resp, @PathVariable("id") Long id) {AnnouncementAnnex announcementAnnex = announcementAnnexService.selectById(id);//真实文件名String name = announcementAnnex.getAnnexUrl();String downloadName=announcementAnnex.getAnnexName();
//        进行转码后的文件名,用来下载之后的文件名PublicController.download(resp,name,downloadName);}

其中download方法

 /*** @param resp* @param name         文件真实名字* @param downloadName 文件下载时名字*/public static void download(HttpServletResponse resp, String name, String downloadName) {String fileName = null;try {fileName = new String(downloadName.getBytes("GBK"), "ISO-8859-1");} catch (UnsupportedEncodingException e) {e.printStackTrace();}///home/tomcat/apache-tomcat-9.0.1/filesString realPath = "D:" + File.separator + "apache-tomcat-8.5.15" + File.separator + "files";
//        String realPath=File.separator+"home"+File.separator+"tomcat"+File.separator+"apache-tomcat-9.0.1"+File.separator+"files";String path = realPath + File.separator + name;File file = new File(path);resp.reset();resp.setContentType("application/octet-stream");resp.setCharacterEncoding("utf-8");resp.setContentLength((int) file.length());resp.setHeader("Content-Disposition", "attachment;filename=" + fileName);byte[] buff = new byte[1024];BufferedInputStream bis = null;OutputStream os = null;try {os = resp.getOutputStream();bis = new BufferedInputStream(new FileInputStream(file));int i = 0;while ((i = bis.read(buff)) != -1) {os.write(buff, 0, i);os.flush();}} catch (IOException e) {e.printStackTrace();} finally {try {bis.close();} catch (IOException e) {e.printStackTrace();}}}

fileName是文件下载之后的名字,filePath是文件所在文件夹地址,path是文件地址,注意设置的响应类型和编码方式

其中File.separator为路径分隔符,他能自动识别是哪个操作系统而使用不同的路径分隔符(windows是‘\’,linux是‘/’)。

Java实现文件下载相关推荐

  1. java安卓浏览器下载文件,JAVA实现文件下载,浏览器端得到数据没反应解决方案

    JAVA实现文件下载,浏览器端得到数据没反应 代码如下 public void doPost(HttpServletRequest request, HttpServletResponse respo ...

  2. java downloadfile_FileDownload.java:文件下载工具类

    FileDownload.java:文件下载工具类 2017-04-25·Mr.Xia 4489 次浏览 文件下载功能的工具类 JavaWeb工具类目录 [http://baike.xsoftlab. ...

  3. Java Web文件下载

    Web文件下载有两种.一种是文件在站点文件夹下.在浏览器中直接输入文件路径就可以下载.如http://www.xxx.com/file.zip.第二种是文件不在站点文件夹下或者文件是动态生成的(导出报 ...

  4. java临时文件下载_Java临时文件

    java临时文件下载 java.io.File class can be used to create temp file in java. Sometimes we need to create t ...

  5. java二进制文件下载到浏览器默认路径

    java二进制文件下载到浏览器默认路径 java二进制文件下载到浏览器默认路径.当然可以下载到指定系统指定路径但是作用不大. 下面是通过调用的开放接口拿到的一个FileBinary二进制文件,输出流输 ...

  6. java远程文件下载到本地

    java远程文件下载到本地 适用场景:我们再登录网站后选择播放音频,如果需要将音频或者视频下载到本地时,而网站资源又进行了加密,无法获得的情况下.使用该工具类模拟浏览器访问下载 package com ...

  7. JAVA项目文件下载、浏览接口

    JAVA项目文件下载.浏览接口   关于文件上传参照我以前写的这个java项目文件上传文章   如果要接口的写法的话,可以下载这个文件上传下载例子下载地址   本篇文章只说文件下载部分 /*** 文件 ...

  8. java提供文件下载的方法

    java提供文件下载的方法     String root  =  getServletContext().getRealPath( " / " );     String pat ...

  9. java web 文件下载

    java通用文件下载 前端:简单的一个标签 <a href="../emp/OriDownload.do?fileName=421785d6-d76c-46a5-86b4-2cfcb9 ...

  10. java 防止文件下载_Spring,Java:流式文件下载以避免内存不足错误

    我正在开发一个Spring MVC应用程序,用户可以在其中下载文件.用户可以点击触发下载机制的附件.Spring,Java:流式文件下载以避免内存不足错误 昨天,当该多个下载和两个具有约2 GB的文件 ...

最新文章

  1. hi3516中home中的ko
  2. 主席树 ---- LCA(树上第k大)Count on a tree
  3. Android7.0多窗口实现原理(二)
  4. Android系统原生应用解析之桌面闹钟及相关原理应用之时钟任务的应用(二)
  5. QT中使用QCustomplot设置坐标原点在左上或者反转镜像坐标轴
  6. Docker的界面话管理工具
  7. (转载)关于My97 datepicker与Angular ng-model绑定问题解决。
  8. 深度思考的能力,决定了你能走多远
  9. [Python学习] 模块三.基本字符串
  10. 数学和计算机的应用视频教学反思,数学多媒体教学反思.doc
  11. json字符串和字典类型的相互转换(转载)
  12. jQuery 源码解析笔记(一)
  13. 添加Silverlight应用到HTML
  14. Ubuntu“无法解析或打开软件包的列表或是状态文件”的解决办法。
  15. 数据转换软件公司——HYFsoft
  16. 最新!谷歌浏览器去除CSDN广告插件
  17. 英中繁简编程术语对照
  18. 【硕士论文】《动态场景下的语义三维地图构建 》西南科技大学 余东应
  19. 有五万块钱,在农村养牛怎么样?能养多少头牛?
  20. Delphi官方下载地址

热门文章

  1. 宝石典故之“凤凰血染红的鸡血石”
  2. 健康档案管理系统-毕业设计-SSM框架-SpringBoot2.X-VUE-Antd-MyBatis-Shiro
  3. 带括号的简单四则计算器(思路)
  4. 2. Fortran的Hello world-开始Fortran的编程
  5. 法硕(非法学)进入红圈所究竟有多难?
  6. 西北工业大学计算机学院801考纲
  7. java zlib1.dll,zlib1.2.11静态编译
  8. 语音情感识别研究现状
  9. 前端HTML5视频_HTML5核心-张晓飞-专题视频课程
  10. 无向图、深度优先搜索(无向图)、广度优先搜索(无向图)、无向图路径查找(基于深度优先搜索)