Java下载文件的几种方式
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下载文件的几种方式相关推荐
- 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 ...
- 【文件下载】java下载文件的几种方式(本地下载、从网络上下载、在线浏览)
原文地址:https://www.cnblogs.com/sunny3096/p/8204291.html 1.以流的方式下载. public HttpServletResponse download ...
- java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解
废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...
- 创建和应用Java包文件的两种方式(转)
创建和应用Java包文件的两种方式(转) <Java编程艺术>章节选登.作者:高永强 清华大学出版社 (即将出版) 12.1 包--package ... 12.1.1 包命名规 ...
- python 下载文件-Python下载文件的11种方式
原标题:Python下载文件的11种方式 在本教程中,你将学习如何使用不同的Python模块从web下载文件.此外,你将下载常规文件.web页面.Amazon S3和其他资源. 最后,你将学习如何克服 ...
- 前端下载文件的几种方式
前端下载文件的几种方式 前言 1. window.open 2. window.location.href 3. a标签 4. iframe 5. blob 前言 总结下载文件的几种方式,文件都是通过 ...
- springboot Java实现多文件的zip压缩操作 + 通过浏览器下载文件的两种方式
注只适配utf-8的场景,待完善! 压缩为zip文件 通过java程序输出文件 /*** 功能:压缩多个文件成一个zip文件* @param srcfile:源文件列表* @param zipfile ...
- java 文件下载方法_【工具类】Java后台上传下载文件的几种方式
/** * 将本地照片上传至腾讯云服务上 */ public void uploadImage(String localImagePath) throws Exception { // 1.将订单照片 ...
- Java如何实现下载文件的几种方式
目录 一.以流的方式下载 二.下载本地文件 三.下载网络文件 四.在线打开的方式 五.将文件转换成base64 六.将MultipartFile转换为File 一.以流的方式下载 public Htt ...
最新文章
- BZOJ5340 [Ctsc2018]假面 【概率dp】
- CF 19D Points 【线段树+平衡树】
- php实现tcp连接esp8266,ESP8266之TCP透传
- css规则由两部分构成,CSS-层叠样式表基础教程
- 【计算机网络】计算机网络 相关概念 ( 计算机网络概念 | 计算机网络功能 | 组成 | 工作方式 | 功能组成 | 分类 )
- Android常用代码(类似工具类吧)
- ERP系统开发平台 (C#语言,支持多数据库)
- hihoCoder #1467 : 2-SAT·hihoCoder音乐节
- 飞康力推“一次付费”的存储定价模式
- 第1讲:软件测试背景
- JSP与Servlet 程序设计教程
- Yu-Chee Tseng
- mysql恢复数据库命令_备份与还原mysql 数据库的常用命令。
- 数据结构与算法分析(C++语言版)张琨版 课后答案———第一章
- html怎么美化输入框,css 美化input输入框-美化按钮
- c语言给字母加密,C语言文字简单加密程序的实现
- 重心法求中心matlab,两个中转站选址问题(重心法,metlab,spss)程序.ppt
- 激光测距传感器原理与应用介绍
- electron使用regedit模块时的正确配置方法
- 开放IPTV论坛(OIPF)的HBB TV标准规范
热门文章
- java简单纸牌游戏_活动回顾 | 畅玩法语纸牌游戏
- php快速排序实现代码,快速排序的算法php实现
- JavaScript中带有示例的Math.abs()方法
- 3dmax如何拆分模型_3dmax制作装饰柜1
- excel保存快捷键_干货 | 快速提高工作效率的电脑快捷键!
- 微信小程序python解析获取用户手机号_python获取微信小程序openid及用户信息
- 浅谈计算机程序设计语言,探讨计算机程序设计语言教学
- cisc 和 risc_RISC和CISC | 电脑组织
- Java类类getConstructor()方法及示例
- Java RandomAccessFile writeLong()方法与示例