HTTP断点下载控件开发文档-Xproer.HttpDownloader
作者:北京新颖网络 来源:博客园 发布时间:2011-03-26 16:17 阅读:97 次 原文链接 [收藏]
版权所有 2009-2011 北京新颖网络
保留所有权利
官方网站:http://www.ncmem.com
官方博客:http://www.cnblogs.com/xproer
产品首页:http://www.ncmem.com/webplug/http-downloader/index.aspx
在线演示:http://www.ncmem.com/products/http-downloader/demo/index.html
升级日志:http://www.cnblogs.com/xproer/archive/2011/03/26/1996330.html
示例下载:http://www.ncmem.com/download/HttpDownloader-Demo.rar
联系邮箱:1085617561@qq.com
联系QQ:1085617561
1. JavaScript对象
1.1. HttpDownloader对象
类型:JavaScript
文件上传对象的包装类,用户在实际的项目中只需要创建FileUploader对象,然后通过FileUploader对象就可以进行文件上传操作。
语法:
JavaScript(声明)
function HttpDownloader() { }
方法
名称 |
说明 |
|
Ready |
指示文件上传对象准备完毕 |
|
Download |
开始下载文件。此方法将会自动续传。 |
|
Stop |
停止文件上传 |
|
DownNext |
继续传输上传队列中的下一个文件 |
Ready方法
将上传任务状态设置为准备状态。
Post方法
开始上传文件。
说明:此函数将会自动实现断点续传功能。如果当前任务文件只下载了一半,则在下次开始时HttpDownloader组件将会自动定位到上次下载的位置继续下载数据。
Stop方法
停止下载任务。
DownNext方法
继续上传队列中下一个任务。
属性
名称 |
说明 |
|
State |
下载对象状态。 |
|
FileID |
下载任务ID。 |
|
LocalFolder |
本地文件夹。例:D:\Soft\ |
|
pMsg |
消息对象。 |
|
pProcess |
上传进度条对象 |
|
pPercent |
上传进度百分比。 |
|
pButton |
控制按钮 |
|
FireUrl |
互联网文件地址。例:http://download.microsoft.com/download/4/C/A/4CA9248C-C09D-43D3-B627-76B0F6EBCD5E/IE9-Windows7-x86-chs.exe |
1.2. DownloaderManager对象
类型:JavaScript
文件管理器。
方法
AddFile方法
添加一个文件到下载对列中
语法:
void AddFile(url);
参数:
url 网络文件地址。例:http://www.qq.com/qq.exe
DownFirst方法
开始下载队列中的第一个文件。
语法:
void DownFirst()
Exist方法
检查上传队列中是否存在指定文件。
说明:此函数是根据本地文件的完整路径来检测的。
bool Exist();
返回值:
true
表示存在。
false
不存在。
属性
Fields属性
上传时附加的额外信息。
注意:此属性暂时不支持中文字符串。
以下示例演示上传时添加用户名和密码的额外信息:
var manager = new DownloaderManager("FilePostLister");
manager.Fields["UserName"] = "test";
manager.Fields["UserPass"] = "test";
Config属性
提供全局配置信息。
语法:
this.Config = {
"EncodeType" : "UTF-8"
"Folder" : "D:\\"//本地文件夹。下载文件后保存的本地文件夹地址
};
EncodeType值
服务器编码方式。请求的URL如果带参数,则需要设置此编码
如果服务器端编码方式是UTF-8
<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
则客户端也必须是UTF-8
var manager = new FileTransferManager("FilePostLister");
manager.Config["EncodeType"] = "UTF-8";
如果服务端编码方式是GB2312
<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>
则客户端也必须是GB2312
var manager = new FileTransferManager("FilePostLister");
manager.Config["EncodeType"] = "GB2312";
2. ActiveX对象
2.1. Xproer.DownloaderPartition对象
CLSID:6528602B-7DF7-445A-8BA0-F6F996472569
类型:ActiveX
文件夹选择对象。弹出一个文件选择对话框,为用户提供选择文件的功能。
方法
名称 |
说明 |
|
ShowFolder |
弹出文件选择对话框 |
ShowFolder方法
显示文件夹选择对话框。
示例
下面的代码示例将会打开一个文件夹选择窗口
JavaScript:
<script type="text/javascript" language="javascript">
//选择文件夹
function ShowFolderDlg()
{
var obj = new ActiveXObject(manager.ActiveX["Partition"]);
if(!obj.ShowFolder()) return;
manager.Config["Folder"] = obj.Folder;
}
</script>
2.2. Xproer.HttpDownloader对象
CLSID:E94D2BA0-37F4-4978-B9B9-A4F548300E48
类型:ActiveX
HTTP文件下载对象,负责文件的下载和续传工作。
属性
名称 |
说明 |
|
FileID |
文件ID。必须唯一。 |
|
Object |
JS对象指针。 |
|
FileUrl |
网络文件地址。例:http://www.qq.com/qq.exe |
|
LocalFolder |
本地文件夹。用来保存下载的文件。例:D:\\Soft\\ |
|
EncodeType |
编码类型。GB2312/UTF-8 |
事件
名称 |
说明 |
|
OnComplete |
在文件上传完成时发生 |
|
OnPost |
每当向服务器传输成功一部分数据时发生 |
|
OnError |
在文件上传出现错误时发生 |
OnComplete事件
传输完成事件,当文件成功下载完毕后,插件将会调用此方法
参数:
obj JS对象。
OnPost事件
传输数据事件。每当HttpDownloader插件成功向服务器传输二进制数据后将触发此事件。
参数:
obj JS对象。
speed 下载速度。
downLen 已下载长度。
percent 已下载百分比。
time 剩余时间。00:12:20
OnError事件
传输错误事件,当传输出现错误时系统将会自动调用此事件。
参数:
obj JS对象。
err 错误码
0 |
启动网络环境错误 |
1 |
SOCKET错误 |
2 |
打开SOCKET错误 |
3 |
创建SOCKET错误 |
4 |
连接服务器错误 |
5 |
发送数据错误 |
6 |
远程文件长度为0 |
7 |
未设置本地目录 |
8 |
建文件失败 |
9 |
向本地文件写入数据失败 |
10 |
公司未授权 |
11 |
未设置IP |
12 |
域名未授权 |
13 |
文件超过限制大小 |
14 |
网络超时 |
400 |
错误请求 |
401 |
未授权 |
402 |
支付请求 |
403 |
禁止访问 |
404 |
未找到页面 |
405 |
方法不允许 |
406 |
不接受请求 |
407 |
"需要验证代码 |
408 |
请求超时 |
409 |
访问冲突 |
410 |
已过时 |
411 |
未指定请求内容长度 |
412 |
前提条件失败 |
413 |
请求内容过长 |
414 |
请求地址过长 |
415 |
不支持的媒体类型 |
416 |
请求范围不符合要求 |
417 |
预期失败 |
500 |
内部服务错误 |
501 |
未实现 |
502 |
"错误的网关 |
503 |
服务不可用 |
504 |
网关超时 |
505 |
HTTP版本不支持 |
示例
下面的代码将会创建一个下载项,并将文件下载到本地D盘下。
JavaScript
<script type="text/javascript" language="javascript">
var manager = new DownloaderManager("FilePostLister");
var obj = document.getElementById("FilePanel1");
if (null != obj) obj.OnFileDrop = eOnFileDrop;
manager.Config["EncodeType"] = "GB2312";
manager.Config["Folder"] = "D:\\";
manager.Fields["UserName"] = "test";//与文件同时上传的附加信息。
manager.Fields["UserPass"] = "test";
function StartDown()
{
manager.AddFile("http://download.microsoft.com/download/4/C/A/4CA9248C-C09D-43D3-B627-76B0F6EBCD5E/IE9-Windows7-x86-chs.exe");
manager.DownFirst();
}
//选择文件夹
function ShowFolderDlg()
{
var obj = new ActiveXObject(manager.ActiveX["Partition"]);
if(!obj.ShowFolder()) return;
manager.Config["Folder"] = obj.Folder;
}
</script>
3. UI模板
您可以根据实际需求来修改以下模板。
HTML:
<div class="UploaderItem" id="UploaderTemplate">
<div class="UploaderItemLeft">
<div class="FileName top-space">HttpDownloader程序开发.pdf</div>
<div class="ProcessBorder top-space">
<div class="Process"></div>
</div>
<div class="PostInf top-space">已下载:15.3MB 速度:20KB/S 剩余时间:10:02:00</div>
</div>
<div class="UploaderItemRight">
<a class="Btn" href="javascript:void(0)">取消</a>
<div class="ProcessNum">35%</div>
</div>
</div>