代码示例

package com.xiaomin.filedownload;import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Demo extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {/** 设置输出的格式*/String fileName = "lyf.jpg".toString(); // 文件的默认保存名response.reset();//清除首部的空白行response.setContentType("bin");//是设置文件类型的,bin这个文件类型是不存在的,浏览器遇到不存在的文件类型就会出现一个下载提示。response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");///** 读取磁盘上的文件*/InputStream inStream = new FileInputStream("D:/lyf_result.jpg");// 文件的存放路径// 循环取出流中的数据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();}}
}

Content-disposition 的说明如下:

  Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。当 Internet Explorer 接收到头时,它会激活文件下载对话框,它的文件名框自动填充了头中指定的文件名。(请注意,这是设计导致的;无法使用此功能将文档保存到用户的计算机上,而不向用户询问保存位置。)

服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器中显示,如果需要提示用户保存,就要利用Content-Disposition进行一下处理,关键在于一定要加上attachment:

Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");

备注:这样浏览器会提示保存还是打开,即使选择打开,也会使用相关联的程序比如记事本打开,而不是IE直接打开了。

截图留念

Java Response实现文件下载相关推荐

  1. Java隐含对象实验报告,JSP隐含对象response实现文件下载

    一.简单介绍JSP隐含对象response实现文件下载 (1)在JSP中实现文件下载最简单的方法是定义超链接指向目标资源,用户单击超链接后直接下载资源,但直接暴露资源的URL也会带来一些负面的影响,例 ...

  2. Java HttpServletResponse 多文件下载

    测试 Java HttpServletResponse 多文件下载(ZIP压缩) 1 项目结构 2 Tomcat 配置 3 测试代码 3.1 FileDownloadServlet 3.2 FileU ...

  3. HTTP Servlet Response完成文件下载、一次性验证码的实现

    HTTP Servlet Response运行过程 通过Response设置响应行 package cn.aynortechnology.line;import java.io.IOException ...

  4. java实现高效文件下载

    java实现高效文件下载 本文我们介绍几种方法下载文件.从基本JAVA IO 到 NIO包,也介绍第三方库的一些方法,如Async Http Client 和 Apache Commons IO. 最 ...

  5. java response 对象_82 Java基础 Response对象

    1 Response对象概述 负责对浏览器进⾏响应的对象 什么是响应: 服务器接收到请求需要进行处理,将处理以后的结果显示回浏览器端(将这个过程称为是响应Response). 查看Servlet中的s ...

  6. java response 状态码_response(向客户端写入数据、对相应进行设置(状态码、响应头))...

    一.向客户端写入数据 1.写入文字 protected voiddoGet(HttpServletRequest request, HttpServletResponse response) thro ...

  7. java实现远程文件下载

    转自JAVA 实现远程文件下载 相信很多同学在实际的项目开发中都会遇到一个问题,如何跨服务下载文件?在传统SSH, SSH2, SSM架构中可能很少遇到这样的问题,但是在当前逐渐流行的微服务架构中,这 ...

  8. Java 之 Excel文件下载

    Java 之 Excel文件下载 可以直接当作工具类使用 Controller业务层使用 做为Utils工具类使用 实例截图 图片三联 可以直接当作工具类使用 老规矩,废话不多说直接上代码: Cont ...

  9. java 下载加速_一种基于Java的大文件下载加速方法与流程

    本发明涉及java/多线程技术领域,涉及一种加速文件下载装置,具体提供一种基于java的大文件下载加速方法. 背景技术: 现有的常用下载方式是基于浏览器的单线程下载.这种单线程下载的方式,是通过htt ...

  10. Java实现网络文件下载demo

    Java实现网络文件下载demo import java.io.*; import java.net.HttpURLConnection; import java.net.URL;/*** @auth ...

最新文章

  1. IDEA中将代码块封装为方法,IDEA代码重构快捷键
  2. 摄像头和激光雷达都被蒙蔽?UCI首次提出针对自动驾驶多传感器融合感知的攻击...
  3. 盘点丨春节假期里你错过的人工智能重要新闻
  4. Traefik访问master节点不通的问题定位
  5. 学习笔记之Java程序设计实用教程
  6. C++ 手动实现简单的智能指针类
  7. 剑指offer 面试题62. 圆圈中最后剩下的数字
  8. 程序执行系统VC++程序出现“试图执行系统不支持的操作”
  9. LNMP 1.2 Nginx编译安装
  10. python编程和excel_Excel Vs. Python?为Excel正名
  11. 计算机会计什么是对应结转,会计科目对应关系
  12. 玩转IE之自动切换代理服务器
  13. 裸辞自学java和报培训班_程序员:裸辞十多天,不敢告诉家里人,假装每天上班,安静地成长...
  14. 2021金九银十面试季!java开发微信公众号图片上传功能
  15. Web安全技术—常见的攻击和防御
  16. 基于PHP的旅游管理系统
  17. 自动控制理论基本概念
  18. 基于GEE平台提取水体
  19. Centos 7yum安装LAMP
  20. [绝对原创] AKM项目轶事之FLYBACK飞机晚点索赔

热门文章

  1. ADS 2013 momentum仿真出错
  2. android高通camera驱动调试,高通Camera模块驱动指南资料
  3. Django 文件下载
  4. 音视频的简介及其I2S协议
  5. python打印字符串数组_python3字符串格式打印:如何从数组打印?
  6. python turtle库有什么用_turtle库使用简介
  7. pythonturtle编程_Python编程小记:turtle库
  8. 微PE装Win10详细教程 手把手教你UEFI+GPT方式安装Win10系统教程
  9. SAP SD pricing condition技术在系统里的一些练习
  10. 汽车行业DBC文件解析 | Python 解析dbc文件