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对象

CLSID6528602B-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对象

CLSIDE94D2BA0-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>

原文地址:https://www.cnblogs.com/lzhitian/p/2424011.html