原文地址:https://www.cnblogs.com/sunny3096/p/8204291.html


1.以流的方式下载.

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;}

2.下载本地文件.

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();}}

3.下载网络文件.

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();}}

4.支持在线方式打开.

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();}

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

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

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

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

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

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

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

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

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

  5. Java下载文件的几种方式

    public HttpServletResponse download(String path, HttpServletResponse response) {try {// path是指欲下载的文件 ...

  6. 从网络上下载文件的两种方式

    Delphi 编程,从网络上下载文件,我一般用 UrlDownloadToFile API函数,简单,实用. function DownloadFile(const strURL, strDownFi ...

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

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

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

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

  9. 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 ...

最新文章

  1. html5转apicloud,使用APICloud编写优雅的HTML5代码
  2. Xamarin.FormsShell基础教程(9)Shell相关类体系
  3. Cmake知识----编写CMakeLists.txt文件编译C/C++程序
  4. 每日一皮:我当程序员的时候也是...
  5. 如何用Linux的命令正确识别cpu的个数和核数
  6. 「OS」Centos7安装Nvidia驱动
  7. Spring Cloud Feign 熔断器支持
  8. 01背包问题,动态规划求解
  9. Java之杨辉三角的实现
  10. 全网AI和机器学习资源大合集(研究机构、视频、博客、书籍...)
  11. JQuery插件iScroll实现下拉刷新,滚动翻页特效
  12. 深入浅出通信原理知识点4
  13. 跨境电商SaaS会成为一门大生意吗?
  14. Java常用开发工具推荐
  15. 激光SLAM:LOAM-Livox 算法研究(1) -- 功能包编译与验证
  16. <<飞 鸟 集>> 泰戈尔
  17. “发烧请假”是面照妖镜,聊聊我以前遇到的奇葩领导
  18. 程序员自爆奇葩入职原因:进腾讯是为了不用续费年费会员,进抖音是想天天上班刷抖音
  19. 是否能任取前序、中序和后序两种序列建立二叉树?
  20. 2021 年年度最佳开源软件

热门文章

  1. 小米手机多功能计算机都怎么使用方法,小米手机要怎么投屏?用了三年才发现这个方法,用过的人都说爽!...
  2. python二维数组切片规则_详解Python二维数组与三维数组切片的方法
  3. 接手项目,项目路径与本机UE4路径不一致以及Failed to open descriptor file ..//..//..//UE4/UE4.uproject的解决方法
  4. 幼儿园 计算机课教案,幼儿园小班主题《计算机环境与幼儿兴趣培养》优质公开课Word教案.doc...
  5. html输出计算结果到文本框,在文本框中输入两个操作数和选择运算符后,在页面上显示输出结果...
  6. 【Mac使用笔记】mac 设置开机自启动
  7. 成为优秀领导者必备的五个能力要素
  8. NoteBurner Netflix Video Downloader帮你实现下载电影和电视节目并离线观看
  9. 【程序员要不要报班】难以抉择 ing
  10. vue 前端服务器代理,proxyTable简要叙述