JSP断点续传多线程链接下载
<%
//你可以使用你服务器上的文件及其路径
String s = "E:\\resin-2.1.14\\webapps\\ROOT\\reg.bat";//RandomAccessFile 方式
java.io.RandomAccessFile raf = new java.io.RandomAccessFile(s,"r");//FileInputStream 方式
//java.io.File f = new java.io.File(s);
//java.io.FileInputStream fis = new java.io.FileInputStream(f);response.reset();
response.setHeader("Server", "ad@Interdrp.com");
//告诉客户端允许断点续传多线程连接下载
response.setHeader("Accept-Ranges", "bytes");long p = 0;
long l = 0;
l = raf.length(); //RandomAccessFile 方式
//l = f.length(); //FileInputStream 方式//如果是第一次下,还没有断点续传,状态是默认的 200,无需显式设置
if (request.getHeader("Range") != null) //客户端请求的下载的文件块的开始字节
{
//如果是下载文件的范围而不是全部,向客户端声明支持并开始文件块下载
//要设置状态
//响应的格式是:
//HTTP/1.1 206 Partial Content
response.setStatus(javax.servlet.http.HttpServletResponse.SC_PARTIAL_CONTENT);//206//从请求中得到开始的字节
//请求的格式是:
//Range: bytes=[文件块的开始字节]-
p = Long.parseLong(request.getHeader("Range").replaceAll("bytes=","").replaceAll("-",""));
}//下载的文件(或块)长度
//响应的格式是:
//Content-Length: [文件的总大小] - [客户端请求的下载的文件块的开始字节]
response.setHeader("Content-Length", new Long(l - p).toString());if (p != 0)
{
//不是从最开始下载,
//响应的格式是:
//Content-Range: bytes [文件块的开始字节]-[文件的总大小 - 1]/[文件的总大小]
response.setHeader("Content-Range","bytes " + new Long(p).toString() + "-" + new Long(l -1).toString() + "/" + new Long(l).toString());
}//response.setHeader("Connection", "Close"); //如果有此句话不能用 IE 直接下载
//使客户端直接下载,
//响应的格式是:
//Content-Type: application/octet-stream
response.setContentType("application/octet-stream");//为客户端下载指定默认的下载文件名称
//响应的格式是:
//Content-Disposition: attachment;filename="[文件名]"
response.setHeader("Content-Disposition", "attachment;filename=\"" + s.substring(s.lastIndexOf("\\") + 1) + "\""); //RandomAccessFile 方式
//response.setHeader("Content-Disposition", "attachment;filename=\"" + f.getName() + "\""); //FileInputStream 方式raf.seek(p);
//fis.skip(p);byte[] b = new byte[1024];
int i;while ( (i = raf.read(b)) != -1 ) //RandomAccessFile 方式
//while ( (i = fis.read(b)) != -1 ) //FileInputStream 方式
{
response.getOutputStream().write(b,0,i);
}
raf.close(); //RandomAccessFile 方式
//fis.close(); //FileInputStream 方式
%>
JSP断点续传多线程链接下载相关推荐
- python3.6进度条_Python实现下载界面(带进度条,断点续传,多线程多任务下载等)...
开发环境: Windows 7 64位,Python 3.6.2 实现功能: 进度条,下载速度和下载进度的显示,断点续传(暂停继续下载功能),取消下载等功能 下载界面,如图所示 点击'新建任务',弹出 ...
- python3多线程断点下载_python支持断点续传的多线程下载示例 -电脑资料
复制代码代码如下: #! /usr/bin/env python #coding=utf-8 from __future__ import unicode_literals from multipro ...
- 断点续传---多线程下载进阶(一)
打算总结7篇笔记.来学习下断点续传---多线程下载进阶 AndroidManifest.xml <?xml version="1.0" encoding="utf- ...
- 安卓day29网络编程 HttpClient AsyncHttpClient 断点续传多线程下载器 HttpUtils
一.排坑 HttpClient.Header飘红 Android 6.0 已经移除了httpClient module下的build.gradle中加入: android{useLibrary 'or ...
- 如何实现 HTTP 断点续传多线程下载
1. HTTP断点续传多线程下载 一个比较常见的场景,就是断点续传/下载,在网络情况不好的时候,可以在断开连接以后,仅继续获取部分内容. 例如在网上下载软件,已经下载了 95% 了,此时网络断了,如果 ...
- curl命令断点续传多线程下载文件
新版本发布 curl命令7.66.0版本支持多线程下载 参考:https://daniel.haxx.se/blog/2019/09/11/curl-7-66-0-the-parallel-http- ...
- 下载神器:axel aria2 mwget多线程快速下载取代curl和wget的多线程下载命令
对于在 Linux 的下载工具而言,比较常用的就是 wget 或者 curl,吾也一直用 wget 的方式进行网络上的资源下载.偶然发现了 axel 这个支持多线程的下载工具,试用了几次之后,发现网络 ...
- python 下载qq群文件_利用多线程快速下载腾讯QQ群文件的方法
引言: 众所周知,用QQ客户端下载QQ群文件的速度实在是缓慢,这里讲一下如何利用多线程快速下载腾讯QQ群文件. 原始事件发生在2018年8月4日,笔者的同学制作了一个毕业短片并且将其上传到了班级的QQ ...
- python下载vip素材_Python素材下载爬虫,多线程rar下载爬虫
一个多线程素材下载爬虫,实现多线程素材下载,包含素材包rar,素材图及素材描述,应用了经典的生产者与消费者模式,不过数据没有下载全,容易出现卡死的问题,期待后期能够解决相关问题,可以算是一个半成品,供 ...
最新文章
- 处理xmpp 离线信息,
- Android面试:Java相关
- Leetcode:convert_sorted_array_to_binary_search_tree
- 红黑树分为红和黑有什么好处_BAT面试程序员必问:什么是红黑树?
- 学习笔记---将Asp.Net网站发布到IIS的四种方法及注意事项
- [2019杭电多校第二场][hdu6602]Longest Subarray(线段树)
- hibernate 反向生实体类 and 为什么老是多一个id
- 基于行政区划的百度个性化地图及遥感影像栅格瓦片下载合成器(可叠加行政区划,适合用作科研遥感影像附图)
- AutoPatch java_EBS开发技术之Patch安装
- 努力不是为了追赶别人,只是为了超越自己
- Python实现线性函数的拟合算法
- oracle 12988,ORA-12988: cannot drop column from table owned by SYS
- DotNetTools Workflow教程
- 启动到APP的设置页,小米手机自启动管理页,小米手机APP权限管理页
- EF6 T4 Model.TT文件的修改-自动加上注释
- 贷款的五种方法,解决您的购房资金问题
- matlab第六章课后答案,MATLAB教程2012a第6章习题解答-张志涌
- iOS开发经常使用国外站点清单
- ERP实施-保密配方管理方案
- 定制自己的火狐搜索插件 searchplugins
热门文章
- [IE兼容性] Table 之边框
- UVALive - 6440
- 西安外国语大学计算机基础,西安外国语大学教务处.PDF
- android传感器开发与智能设备案例实战_【我的物联网成长记2】设备如何进行选型?...
- Oracle dbms_job管理
- python手机编译器推荐_Python编译器最新版|Python编译器手机版下载 v1.2 安卓版 - 数码资源网...
- 印象笔记打开错误_印象笔记新增桌面便签功能
- java response文件流下载,后缀名称设置
- RabbitMQ-Java实现Publish/Subscribe订阅模式
- JDK8的LocalDateTime用法