public HttpServletResponse download(String path, HttpServletResponse response) {try {// path是指欲下载的文件的路径。File file = new File(path);// 取得文件名。String filename = file.getName();// 取得文件的后缀名。String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();// 以流的形式下载文件。InputStream fis = new BufferedInputStream(new FileInputStream(path));byte[] buffer = new byte[fis.available()];fis.read(buffer);fis.close();// 清空responseresponse.reset();// 设置response的Headerresponse.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));response.addHeader("Content-Length", "" + file.length());OutputStream toClient = new BufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");toClient.write(buffer);toClient.flush();toClient.close();} catch (IOException ex) {ex.printStackTrace();}return response;
}
public void downloadLocal(HttpServletResponse response) throws FileNotFoundException {// 下载本地文件String fileName = "Operator.doc".toString(); // 文件的默认保存名// 读到流中InputStream inStream = new FileInputStream("c:/Operator.doc");// 文件的存放路径// 设置输出的格式response.reset();response.setContentType("bin");response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");// 循环取出流中的数据byte[] b = new byte[100];int len;try {while ((len = inStream.read(b)) > 0)response.getOutputStream().write(b, 0, len);inStream.close();} catch (IOException e) {e.printStackTrace();}
}
public void downloadNet(HttpServletResponse response) throws MalformedURLException {// 下载网络文件int bytesum = 0;int byteread = 0;URL url = new URL("windine.blogdriver.com/logo.gif");try {URLConnection conn = url.openConnection();InputStream inStream = conn.getInputStream();FileOutputStream fs = new FileOutputStream("c:/abc.gif");byte[] buffer = new byte[1204];int length;while ((byteread = inStream.read(buffer)) != -1) {bytesum += byteread;System.out.println(bytesum);fs.write(buffer, 0, byteread);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
}
//支持在线打开文件的一种方式
public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {File f = new File(filePath);if (!f.exists()) {response.sendError(404, "File not found!");return;}BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));byte[] buf = new byte[1024];int len = 0;response.reset(); // 非常重要if (isOnLine) { // 在线打开方式URL u = new URL("file:///" + filePath);response.setContentType(u.openConnection().getContentType());response.setHeader("Content-Disposition", "inline; filename=" + f.getName());// 文件名应该编码成UTF-8} else { // 纯下载方式response.setContentType("application/x-msdownload");response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());}OutputStream out = response.getOutputStream();while ((len = br.read(buf)) > 0)out.write(buf, 0, len);br.close();out.close();
}

如果你尝试了以上几种方法始终不行,看看你前台是不是用ajax做跳转了,注意ajax不支持下载!搞了我半天。。。

Java下载文件的几种方式相关推荐

  1. Java下载文件的四种方式详细代码

    1.以流的方式下载 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 public HttpS ...

  2. 【文件下载】java下载文件的几种方式(本地下载、从网络上下载、在线浏览)

    原文地址:https://www.cnblogs.com/sunny3096/p/8204291.html 1.以流的方式下载. public HttpServletResponse download ...

  3. java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...

  4. 创建和应用Java包文件的两种方式(转)

    创建和应用Java包文件的两种方式(转) <Java编程艺术>章节选登.作者:高永强 清华大学出版社 (即将出版) 12.1  包--package    ... 12.1.1  包命名规 ...

  5. python 下载文件-Python下载文件的11种方式

    原标题:Python下载文件的11种方式 在本教程中,你将学习如何使用不同的Python模块从web下载文件.此外,你将下载常规文件.web页面.Amazon S3和其他资源. 最后,你将学习如何克服 ...

  6. 前端下载文件的几种方式

    前端下载文件的几种方式 前言 1. window.open 2. window.location.href 3. a标签 4. iframe 5. blob 前言 总结下载文件的几种方式,文件都是通过 ...

  7. springboot Java实现多文件的zip压缩操作 + 通过浏览器下载文件的两种方式

    注只适配utf-8的场景,待完善! 压缩为zip文件 通过java程序输出文件 /*** 功能:压缩多个文件成一个zip文件* @param srcfile:源文件列表* @param zipfile ...

  8. java 文件下载方法_【工具类】Java后台上传下载文件的几种方式

    /** * 将本地照片上传至腾讯云服务上 */ public void uploadImage(String localImagePath) throws Exception { // 1.将订单照片 ...

  9. Java如何实现下载文件的几种方式

    目录 一.以流的方式下载 二.下载本地文件 三.下载网络文件 四.在线打开的方式 五.将文件转换成base64 六.将MultipartFile转换为File 一.以流的方式下载 public Htt ...

最新文章

  1. BZOJ5340 [Ctsc2018]假面 【概率dp】
  2. CF 19D Points 【线段树+平衡树】
  3. php实现tcp连接esp8266,ESP8266之TCP透传
  4. css规则由两部分构成,CSS-层叠样式表基础教程
  5. 【计算机网络】计算机网络 相关概念 ( 计算机网络概念 | 计算机网络功能 | 组成 | 工作方式 | 功能组成 | 分类 )
  6. Android常用代码(类似工具类吧)
  7. ERP系统开发平台 (C#语言,支持多数据库)
  8. hihoCoder #1467 : 2-SAT·hihoCoder音乐节
  9. 飞康力推“一次付费”的存储定价模式
  10. 第1讲:软件测试背景
  11. JSP与Servlet 程序设计教程
  12. Yu-Chee Tseng
  13. mysql恢复数据库命令_备份与还原mysql 数据库的常用命令。
  14. 数据结构与算法分析(C++语言版)张琨版 课后答案———第一章
  15. html怎么美化输入框,css 美化input输入框-美化按钮
  16. c语言给字母加密,C语言文字简单加密程序的实现
  17. 重心法求中心matlab,两个中转站选址问题(重心法,metlab,spss)程序.ppt
  18. 激光测距传感器原理与应用介绍
  19. electron使用regedit模块时的正确配置方法
  20. 开放IPTV论坛(OIPF)的HBB TV标准规范

热门文章

  1. java简单纸牌游戏_活动回顾 | 畅玩法语纸牌游戏
  2. php快速排序实现代码,快速排序的算法php实现
  3. JavaScript中带有示例的Math.abs()方法
  4. 3dmax如何拆分模型_3dmax制作装饰柜1
  5. excel保存快捷键_干货 | 快速提高工作效率的电脑快捷键!
  6. 微信小程序python解析获取用户手机号_python获取微信小程序openid及用户信息
  7. 浅谈计算机程序设计语言,探讨计算机程序设计语言教学
  8. cisc 和 risc_RISC和CISC | 电脑组织
  9. Java类类getConstructor()方法及示例
  10. Java RandomAccessFile writeLong()方法与示例