使用Servlet实现字节流下载
来源:互联网 发布:网络验证破解 跳 编辑:程序博客网 时间:2024/06/04 17:44
项目中需要一个下载功能,具体来说是将存储在数据库中的字节流下载下来;
一开始我的解决思路是:
1.从数据库取出字节流;
2.将字节流以文件形式保存在服务器;
3.浏览器访问服务器文件所在位置,下载文件。
但是这种思路被老大毙掉了,让我使用Servlet实现下载,于是在网上搜索了一下实现了该功能,整理结果如下:
一、创建一个Servlet,该类继承HttpServlet,重写service()方法。
service中主要的思想是将下载文件写到文件流中去,这个文件流就是HttpServletResponse对象的输出流,代码如下:
<span style="font-size:18px;">public class DownloadScriptServlet extends HttpServlet {private Logger logger = LoggerFactory.getLogger(DownloadScriptServlet.class);protected ServletContext context;private static final long serialVersionUID = -5183867105614548918L;@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {ProgramService programService = SpringApplicationContext.getBean(ProgramService.class);int scriptId = Integer.parseInt(request.getParameter("scriptId")) ;int scriptVersion = Integer.parseInt(request.getParameter("scriptVersion"));ScriptVersion sv = new ScriptVersion();sv = programService.downloadScriptByScriptId(scriptId, scriptVersion);byte[] script = sv.getScript();if(script == null || script.length == 0){String string = URLEncoder.encode("该次版本无脚本更新!","UTF-8"); response.getWriter().print("<script>alert(decodeURIComponent('" + string + "'));location.href = 'http://localhost:8080/web/program/script.action?t=info&b=prepare&scriptId="+scriptId+"'</script>");}else {String downFilename=sv.getScriptFile();response.setContentType("text/plain");response.setHeader("Location",downFilename); response.setHeader("Content-Disposition", "attachment; filename=" + downFilename); OutputStream outputStream = response.getOutputStream(); outputStream.write(script); outputStream.flush(); outputStream.close();}}}</span>
二、在项目的web.xml中配置创建的Servlet:
<span style="font-size:18px;"><span style="font-size:18px;"><servlet><servlet-name>downloadScriptServlet</servlet-name><servlet-class>com.DownloadScriptServlet</servlet-class></servlet><servlet-mapping><servlet-name>downloadScriptServlet</servlet-name><url-pattern>/service/script/download</url-pattern></servlet-mapping></span></span>三、在前端页面中调用这个Servlet:
<span style="font-size:18px;"><span style="font-size:18px;">function script_download(scriptId,scriptVersion){window.open("../service/script/download?scriptId=" + scriptId + "&scriptVersion=" + scriptVersion);}</span></span>
1 0
- 使用Servlet实现字节流下载
- Struts中使用DownloadAction实现流下载
- Asp.net实现流下载
- 使用输入输出流下载图片
- python 实现视频流下载保存MP4
- 流下载
- 使用FileStream文件流下载---源码
- 使用文件流下载文件功能实现 [原]
- java 文件实现 文件下载 io流下载
- web二进制流下载
- 服务器文件流下载
- brightcove视频流下载
- Java文件流下载
- response文件流下载
- OutputStream 流下载
- 文件按二进制流下载
- IO流下:字节流、流操作规律(java基础)
- 使用POI生成Excel并进行流下载(不需在服务器上保存)
- sed和awk中使用shell变量
- python 装饰器
- 构造函数
- iOS二维码生成
- node进击之路(2)——调用模块
- 使用Servlet实现字节流下载
- 一个动画效果很棒的分享按钮。
- 解开lambda最强作用的神秘面纱
- Wacom推WILL标准 实现跨设备平台手写沟通
- K线图控件,类似于苹果手机股票折线图
- CentOS 6.4下PXE+Kickstart无人值守安装操作系统
- ACCP HTML 第6章 上机3
- Something2Write
- 一个能识别@xxxx 标志从而整块选择与删除的输入框控件。