我们常常点击一个附件的时候,会弹出一个窗口,提示你是要打开还是下载,但这个时候点击打开也是下载,是怎样实现的呢?

通过设置response的响应头就可以实现,content-disposition服务器通过这个响应头告诉浏览器通过下载方式打开文件。

下面看看代码:

package com.you.servlet;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class DownloadServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String path = this.getServletContext().getRealPath("/download/阿狸.jpg");String filename = path.substring(path.lastIndexOf("\\") + 1);response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));InputStream in = null;OutputStream out = null;try {in = new FileInputStream(path);int len = 0;byte[] buffer = new byte[1024];out = response.getOutputStream();while((len = in.read(buffer)) > 0) {out.write(buffer,0,len);}}catch(Exception e) {throw new RuntimeException(e);}finally {if(in != null) {try {in.close();}catch(Exception e) {throw new RuntimeException(e);}}}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

使用response实现文件的下载相关推荐

  1. response的响应头,下载文件

    response的响应头,下载文件 前端代码 <%@ page contentType="text/html;charset=UTF-8" language="ja ...

  2. response输出文件的时候,解决迅雷下载的问题

    //原来是直接Response.WriteFile文件路径:                 Response.Clear();                 Response.Buffer = t ...

  3. iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载

    前言:iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载是在前篇iOS开发之网络编程--使用NSURLConnection实现大文件下载的基础上进行    断点续传的设置 ...

  4. 使用NSURLConnection实现大文件断点下载

    使用NSURLConnection实现大文件断点下载 由于是实现大文件的断点下载,不是下载一般图片什么的.在设计这个类的时候本身就不会考虑把下载的文件缓存到内存中,而是直接写到文件系统. 要实现断点下 ...

  5. Asp.net生成Excel文件并下载(解决使用迅雷下载页面而不是文件的问题)

    这里采用的是在服务端先生成Excel文件,然后利用文件地址下载的方法. 先试用Response.WriteFile的方法: FileInfo fi = new FileInfo(excelFile); ...

  6. Android中关于APK文件的下载、安装和卸载

    如果我们想开发一款App,而这款App的需求中有对Apk文件的下载.安装和卸载功能的话(就像豌豆荚,当然功能不会那强大,因为强大的功能背后总是一些比较NB的技术在支持),那么这篇博客还是比较适合你的. ...

  7. java实现下载压缩文件_java实现文件压缩下载----压缩下载zip

    文件压缩下载 Controller层: /** *文件压缩下载 *billname:文件名 *filename:文件存放路径 */ public void downloadsource(HttpSer ...

  8. 关于使用DataGrid的ButtonColumn,动态添加DataGrid列,实现不定列n个文件的下载功能...

    一.使用DataGrid的ButtonColumn,动态添加DataGrid列,实现不定列n个文件的下载功能 在aspx页面中的代码如下: <asp:datagrid id="User ...

  9. 【原】Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)...

    这里采用的是在服务端先生成Excel文件,然后利用文件地址下载的方法. 生成Excel文件的方法,见:[原].Net创建Excel文件(插入数据.修改格式.生成图表)的方法 先试用Response.W ...

最新文章

  1. Appium定位元素的几种方法总结
  2. 最小生成树prim算法———模板
  3. 【NLP】NLP中的消歧
  4. 【线上圆桌】视频会议下半场
  5. php的两种复合数据类型是什么意思_2.4PHP复合数据类型:数组和对象
  6. linux 磁盘扩容_记录一次ESXi Linux在线扩容,不重启系统
  7. 10问10答:你真的了解线程池吗?
  8. activiti 生命周期_一文让你读懂什么是Activiti工作流
  9. Linux内核网络协议栈:udp数据包发送(源码解读)
  10. 国外经典!架构师必备:《MongoDB实战》第2版
  11. linux编辑器终端,分享|尝试将 Jed 作为你的 Linux 终端文本编辑器
  12. 成信钟楼定时微博报时的设计与实现
  13. 计算24点有什么窍门或技巧吗?
  14. BZOJ 4199: [Noi2015]品酒大会/UOJ #131. 【NOI2015】品酒大会 后缀自动机 树形dp / 后缀数组 单调栈
  15. 关于短除法求两个数的最小公倍数的公式的解释
  16. Ubantu基础指令大集合
  17. EasyExcel的简单使用记录
  18. 淘宝退货退款测试用例
  19. Barsetto百胜图BAV01咖啡机,开启便捷咖啡新时代
  20. matlab currentcharacter,新人求助。

热门文章

  1. 【Android】系统启动流程(zygote 进程启动流程)
  2. Linux可执行文件做成系统服务
  3. python为源文件指定系统默认字符编码是_系统编码、文件编码与python系统编码
  4. b站康师傅Java自学的小小开始2
  5. 笔记本使用小技巧两则
  6. 儿童书写台灯哪个牌子比较好?盘点儿童护眼灯合格的品牌
  7. 在vue中利用highcharts+colormap+canvas实现频谱瀑布图
  8. dw建立站点连接mysql_DW中站点的使用
  9. 数字逻辑触发器(二) 集成触发器
  10. 安卓设备通过USB接口实现与pc端的简单数据通信