后台(28)——文件下载
2017-02-27 22:46
134 查看
探索Android软键盘的疑难杂症
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制
Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南
自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理
作者博客地址:http://blog.csdn.net/lfdfhl
代码解析如下:
得到文件路径,请参见代码第20行
得到文件输入流,请参见代码第21行
从response中获取到ServletOutputStream作为输出流,请参见代码第22行
将图片返回给客户端,请参见代码第23-29行
运行后,效果如下图所示:
嗯哼,看到了吧:浏览器中显示了从服务端获取的我女朋友的照片
但是,如果想让用户下载这张照片该怎么办呢?请看如下示例:
代码解析如下:
获取到文件名称,请参见代码第23行
设置Header指示客户端下载文件,请参见代码第24行
利用Header设置响应的内容的类型
嗯哼,待用户输入地址后即可下载对应的文件。
除此以外,我们可利用画笔在内存中创作一张图片BufferedImage然后再返回给客户端;有的网站登录时的验证码正是采用该方式实现的。
谷哥的小弟学后台(10)——Servlet(2)
谷哥的小弟学后台(11)——Servlet(3)
谷哥的小弟学后台(12)——Servlet(4)
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制
Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南
自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理
版权声明
本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl
文件下载示例
在此,我们使用HttpServletResponse返回一张照片给客户端,请看如下示例:/** * 本文作者:谷哥的小弟 * 博客地址:http://blog.csdn.net/lfdfhl */ package cn.com; import java.io.FileInputStream; import java.io.IOException; 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 TestResponsePhoto extends HttpServlet{ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path=getServletContext().getRealPath("/WEB-INF/ZXM.jpg"); FileInputStream fileInputStream = new FileInputStream(path); ServletOutputStream outputStream = response.getOutputStream(); int len=0; byte [] b=new byte[1024]; while((len=fileInputStream.read(b))!=-1){ outputStream.write(b, 0, len); } outputStream.close(); fileInputStream.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { } }
代码解析如下:
得到文件路径,请参见代码第20行
得到文件输入流,请参见代码第21行
从response中获取到ServletOutputStream作为输出流,请参见代码第22行
将图片返回给客户端,请参见代码第23-29行
运行后,效果如下图所示:
嗯哼,看到了吧:浏览器中显示了从服务端获取的我女朋友的照片
但是,如果想让用户下载这张照片该怎么办呢?请看如下示例:
/** * 本文作者:谷哥的小弟 * 博客地址:http://blog.csdn.net/lfdfhl */ package cn.com; import java.io.FileInputStream; import java.io.IOException; import java.net.URLEncoder; 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 DownPhoto extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path=getServletContext().getRealPath("/WEB-INF/zxm.jpg"); System.out.println("-----------------> path="+path); String fileName=path.substring(path.lastIndexOf("\\")+1); fileName=URLEncoder.encode(fileName, "UTF-8"); response.setHeader("content-disposition", "attachment;filename="+fileName); response.setHeader("content-type", "image/jpeg"); FileInputStream fileInputStream = new FileInputStream(path); ServletOutputStream outputStream = response.getOutputStream(); int len=0; byte [] b=new byte[1024]; while((len=fileInputStream.read(b))!=-1){ outputStream.write(b, 0, len); } outputStream.close(); fileInputStream.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } }
代码解析如下:
获取到文件名称,请参见代码第23行
设置Header指示客户端下载文件,请参见代码第24行
利用Header设置响应的内容的类型
嗯哼,待用户输入地址后即可下载对应的文件。
除此以外,我们可利用画笔在内存中创作一张图片BufferedImage然后再返回给客户端;有的网站登录时的验证码正是采用该方式实现的。
参考资料
谷哥的小弟学后台(09)——Servlet(1)谷哥的小弟学后台(10)——Servlet(2)
谷哥的小弟学后台(11)——Servlet(3)
谷哥的小弟学后台(12)——Servlet(4)
相关文章推荐
- c#.net从后台数据库中下载文件
- Microsoft Official Guide – BackgroundWorker - 如何:在后台下载文件
- asp.net C#后台实现下载文件的几种方法
- JavaEE中文件的下载和文件的上传(--------前后台交互----------)
- Android中AsyncTask进行后台下载文件并在下拉菜单显示下载进度
- vb.net后台http下载无提示覆盖文件
- form表单,easyUi,jquery提交后,SpringMvc后台返回时,IE浏览器提示下载文件
- 文件上传后台和前台代码(文件下载也是)
- java后台下载服务器端文件 下载其他系统文件
- JQuery按照form下载文件+后台asp.net,非ajax(上)
- 迅雷可以侵入后台代码中读取文件进行下载么?
- BackgroundWorker之:在后台下载文件
- BackgroundWorker之:在后台下载文件
- asp.net后台下载文件(解决中文乱码)
- 文件下载的后台代码
- 如何:在后台下载文件
- BackgroundTransferService 多任务后台下载文件
- asp.net BackgroundWorker之在后台下载文件
- java 文件下载的时候后台写了代码,前台没有弹出下载保存的提示框
- JQuery按照form下载文件+后台asp.net,非ajax(下)