JavaServlet实现下载功能
我们在项目中经常会用到下载功能,所以今天我们先说下下载功能实现的思路,然后通过一个案例代码来具体体现。
1.下载的思路:
①首先要获取我们要操作的文件对象的路径
②然后使用获取的文件对象路径构建一个文件操作流对象
③设置好相关的http响应的头,告诉浏览器怎么来操作我们写回的数据,是下载、打开等等。
④通过response获取字节流,并结合我们的文件流进行读取和写出操作
⑤关闭相关的流资源
2.下载具体servlet实现代码:
- package com.servlet;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- @WebServlet("/download.do")
- public class DownloadServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- /**
- * 使用servlet实现文件下载功能
- */
- protected void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- String fileName = "关系图.jpg";
- OutputStream out = null;
- FileInputStream fis = null;
- // 1.获取资源文件的路径,当文件名是中文的时候出现不正常的情况,所以需要进行url编码
- String path = this.getServletContext().getRealPath("/WEB-INF/classes/com/servlet/" + URLEncoder.encode(fileName, "UTF-8"));
- try {
- // 2.根据获取到的路径,构建文件流对象
- fis = new FileInputStream(path);
- out = response.getOutputStream();
- // 3.设置让浏览器不进行缓存,不然会发现下载功能在opera和firefox里面好好的没问题,在IE下面就是不行,就是找不到文件
- response.setHeader("Pragma", "No-cache");
- response.setHeader("Cache-Control", "No-cache");
- response.setDateHeader("Expires", -1);
- // 4.设置Content-type字段
- response.setContentType("image/jpeg");
- // 5.设置http响应头,告诉浏览器以下载的方式处理我们的响应信息
- response.setHeader("content-disposition", "attachment;filename=" + fileName);
- // 6.开始写文件
- byte[] buf = new byte[1024];
- int len = 0;
- while ((len = fis.read(buf)) != -1) {
- out.write(buf, 0, len);
- }
- } finally {
- if (fis != null) {
- fis.close();
- }
- }
- }
- }
至此一个简单的servlet实现下载功能已经实现完毕,有不足的地方,希望大家多多提意见!
JavaServlet实现下载功能的更多相关文章
- iNeedle日志下载功能问题
问题: iNeedle系统本身包含日志下载功能,主要是将web服务器中的用户访问日志按照一定条件进行筛选并下载,提供管理者分析.但是这次的测试中发现iNeedle日志下载一直会卡住,web界面显示正在 ...
- Safari 下用 "location.href = filePath" 实现下载功能的诡异 bug
Safari 下的一些诡异 bug 我们已经领教一二,比如前文中说的 无痕浏览模式下使用 localStorage 的 API 就会报错.今天我们要讲的是利用 location.href = file ...
- location.href 实现点击下载功能
如果页面上要实现一个点击下载的功能,传统做法是使用一个 a 标签,然后将该标签的 href 属性地址指向下载文件在服务端的地址(相对地址或者绝对地址),比如这样: 能这样实现是因为,在浏览器地址栏输入 ...
- php实现文件上传下载功能小结
文件的上传与下载是项目中必不可少的模块,也是php最基础的模块之一,大多数php框架中都封装了关于上传和下载的功能,不过对于原生的上传下载还是需要了解一下的.基本思路是通过form表单post方式实现 ...
- JavaWeb学习记录(一)——response响应头之缓存设置与下载功能的实现
一.HTTP中常用响应头 Location: http://www.it315.org/index.jsp Server:apache tomcat Content-Encoding: gzip Co ...
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
- 【转】Android 服务器之SFTP服务器上传下载功能
原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...
- wuzhicms字段的添加以及实现下载功能
1.字段的添加 发布内容--> 栏目管理--> 字段管理-->添加字段 下面根据需求进行相应的设置. 然后提交即可. 2.下载功能的实现 实例说明: 会员中心相关页面下载功能的实现 ...
- windows下实现uboot的tftp下载功能
一.原理分析 带有uboot的开发板实际上充当的就是tftp客户端,而PC机扮演的角色就是tftp服务器端,而tftp下载功能实际上就是文件传输.tftp服务器可以建立在虚拟机linux下,也可以建立 ...
随机推荐
- Strace--系统调用分析问题集锦
---------------------------------------------------------------------------------------------------- ...
- app产品设计碉堡了
这个项目碉堡了 http://blog.csdn.net/googdev/article/details/54849715 2017-02-03 22:15 3898人阅读 评论(12) 收藏 举报 ...
- Vue 中的组件
VUE中的组件 一个自定义的标签,vue就会把他看成一个组件,vue可以给这些标签赋予一定意义:一个页面就是一个组件 好处: 1.提高开发效率 2.方便重复使用 3.便于协同开发 4.更容易被管理和维 ...
- linux一条命令添加一个root级别账户并设置密码
内网机器提权添加账户,无回显,设置密码就不好弄,下面就是添加一个root级别的账户并设置密码的命令 ? 1 useradd -p `openssl passwd -1 -salt 'lsof' a ...
- Registers
https://github.com/JesusFreke/smali/wiki/Registers Introduction In dalvik's bytecode, registers are ...
- 1.2 Activity
Activity是个应用组件,它给用户提供了为了完成某些工作而可以进行交互操作的界面,例如,电话详情,打电 话,发邮件,或是浏览地图.每一个Activity都有一个窗口来绘制自已的用户界面.通常来说, ...
- SPI_FLASH时序描述及驱动编程
推荐 分享一个朋友的人工智能教程,零基础!通俗易懂!希望你也加入到人工智能的队伍中来! http://www.captainbed.net/strongerhuang Ⅰ.写在前面 前面文章讲述过关于 ...
- C#高级学习群欢迎你(群号 128874886)
C#高级学习群,有着C# ,Asp.net ,Wpf等技术经验相当丰富的工程师,秉承着刘群主开源共享的精神,为新手和高手们提供了良好的学习交流平台,自创群以来,为群员解决了不少的技术难题,大大提高了学 ...
- Transporting Data Between Database
The Export utility can provide a logical backup of: Database objects A tablespace An entire database ...
- javaweb乱码(tomcat服务器)
et提交 :<Connector protocol="HTTP/1.1" port="80" redirectPort="8443" ...