通过Servlet设置文件下载
文件下载
1.获取要下载的文件的绝对路径
但是使用getServletContext().getRealPath()方法在不同的服务器上所获得的实现是不一样的
因为项目被打包入.war文件以后就失去了原来的目录结构,使用获取绝对路径的方法返回为NULL
在这里我们可以使用另一个方法getResourceAsStream()获取路径
String realPath = this.getServletContext().getRealPath("/download/1.jpg");
InputStream inputStream = this.getServletContext().getResourceAsStream("/download/1.jpg");
2.获取要下载的文件名
String fileName = realPath.substring(realPath.lastIndexOf("\")+);
使用getResourceAsStream()方法时由于没有返回一个路径。所以这里的文件名需要自己赋值
String fileName = "1.jpg";
3.设置content-disposition响应头控制浏览器以下载文件的形式打开文件
response.setHeader("content-disposition", "attachment;filename=" + fileName);
4.获取要下载的文件输入流
InputStream in = new FileInputStream(realPath);
int len = 0;
这里的步骤中由于realPath不再使用。所以输入流in可以不用。
5.创建数据缓冲区
byte[] buffer = new byte[1024];
6.通过response对象获取OutputStream流
OutputStream out = response.getOutputStream();
7.将FileInputStream流写入到buffer缓冲区
while((len = in.read(buffer)) > 0){ //这里的in换成inputStream
8.使用OutputStream将缓冲区的数据输出到客户端浏览器
out.write(buffer, 0, len);
}
9.关闭输入流
in.close(); //这里同理

测试结果
通过Servlet设置文件下载的更多相关文章
- servlet实现文件下载所需步骤及说明
servlet实现文件下载所需步骤及说明 CreateTime--2017年9月1日15:46:22 Author:Marydon 参考链接:http://blog.sina.com.cn/s/b ...
- Servlet 之文件下载
Servlet 之文件下载 import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; impor ...
- Servlet处理文件下载的编码问题,乱码。
Servlet处理文件下载的编码问题,乱码. //处理文件名乱码问题 // 获得请求头中的User-Agent String agent = request.getHeader("User- ...
- JQuery调用Servlet实现文件下载
jsp页面上的txt附件,点击后浏览器默认直接打开,结果是乱码. 因为用户上传的txt文件可能是ANSI.Unicode.UTF-8编码的任意一种,上传时后台获取文件内容重写一遍保证浏览器打开正常太过 ...
- 利用Tomcat内置的servlet实现文件下载功能
起因 最近博客所在的VPS挂了又要重装系统,又要重装各种软件. 以前我也经常更换VPS,每次更换都是各种坑爹事情..比如要下载java.下载tomcat.下载mysql..........以前每次我都 ...
- Jetty + Servlet 实现文件下载
Jetty非常适合做嵌入式web开发,正如Jetty的口号"Don’t deploy your application in Jetty, deploy Jetty in your appl ...
- servlet设置缓存时间以及文件的下载
缓存时间的设置: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletE ...
- servlet实现文件下载
之前没怎么用过这个,这次项目中用到了,于是总结一下: 应该说主要注意三方面: 1.写一个servlet 2.在web.xml中配置这个servlet 3.页面上调用这个servlet 第一: 写 ...
- servlet设置cookie
Cookie cookie =new Cookie("user","黄花菜");//实例化一个Cookie对象 cookie.setMaxAge(7*24*60 ...
随机推荐
- Thunder团队Final版本控制
Final版本控制报告 团队介绍:Thunder Check in次数 :6次. check in log(时间.人员.message.动机.其他解释) 代码贡献量.代码贡献比例以及代码作用 git链 ...
- Chrome开发者工具之JavaScript内存分析(转)
尽管JavaScript使用垃圾回收进行自动内存管理,但有效的(effective)内存管理依然很重要.在这篇文章中我们将探讨分析JavaScript web应用中的内存问题.在学习有关特性时请确保尝 ...
- LRU缓存淘汰算法
什么是LRU算法? LRU是Least Recently Used的缩写,即最近最少使用,在有限的内容块中存储最近使用次数最多的数据,当内容块已满时,把最少使用的数据删除以便存储新的内容.
- xhr文件类型说明
2017-08-08 18:31:08 xhr : XML HTTP Request,是一种在后台与服务器进行交互的数据.这意味着可以在不加载整个网页的情况下,对网页中的部分内容进行更新. 这是Aja ...
- java 路径分隔符File.separator 以及 路径两种写法"/"和"\\"
一.File.separator File file=new File(); 这句是新建一个文件.file.separator这个代表系统目录中的间隔符,说白了就是斜线,不过有时候需要双线,有时候是单 ...
- Phalcon框架数据库读写分离的实现方法
Phalcon框架和Yaf类似,是一款用C实现的拓展级别的框架,不过其功能实现更加丰富,设计思路基于依赖注入.容器等方式,更符合现代框架思想.本文主要针对Phalcon框架数据库层的读写分离进行说明, ...
- mac外接显示器 双屏同时滑动问题
问题:mac pro 外接一个显示器,用四个手指横向切换屏幕的时候,外接的显示器也一起跟着动了 解决:
- 12月7日,几个错误,拼写错误,遗漏符号:,记忆有误,max-width的作用。gem mini_magick, simple_form
❌: 1. /Users/chentianwei/jdstore3/jdstore/config/routes.rb:6:in `block in <top (required)>': u ...
- warning: LF will be replaced by CRLF in ***. The file will have its original line endings in your working directory.
git config --global core.autocrlf false
- python-day68--模型层基础(model)
一.ORM : object relationship mapping 对象映射关系 映射关系: 表名 <-------> 类名 字段 <-------> 属性 表记录 & ...