本文档部分API缺少示例代码,诚挚的邀请你参与到示例代码的编写中来,你可以在代码中发布2行自定义注释,内容自拟。 有意者可与刺鸟联系(QQ:4041990 Q群:7702175)

API简介

uexDownloaderMgr对象封装了用于下载文件,支持动态获取下载进度,支持断点下载等。

接口说明

方法说明
uexDownloaderMgr.createDownloader(opId)创建一个下载对象,以opId作为标识。
uexDownloaderMgr.cbCreateDownloader(opId,dataType,data)创建下载对象的回调方法。
uexDownloaderMgr.download(inOpCode,inDLUrl,inSavePath,inMode)执行下载对象。可以间断的下载,下载进度如果再下载还是按照整体进度。
uexDownloaderMgr.onStatus(opId,fileSize,percent,status)执行下载对象。
uexDownloaderMgr.closeDownloader(opId)关闭一个下载对象,以opId作为标识。
uexDownloaderMgr.getInfo(inDLUrl)根据下载url获取下载对象的信息。回调函数是uexDownloaderMgr.cbGetInfo
uexDownloaderMgr.cbGetInfo(opId,dataType,data)uexDownloaderMgr.getInfo的回调函数。
uexDownloaderMgr.clearTask(inDLUrl,inClearMode)根据下载url清除任务。
createDownloader(opId)
参数名称描述
opId标识ID
cbCreateDownloader(opId,dataType,data)
参数名称描述
opId操作ID。
dataType返回数据的数据类型为uex.cInt(值为2)。
data返回int型的数据,成功返回uex.cSuccess(值为0)或失败返回uex.cFailed(值为1)。
download(inOpCode,inDLUrl,inSavePath,inMode)
参数名称描述
inOpCode操作ID。
inDLUrl下载文件URL。
inSavePath下载后文件保存路径。
inMode下载模式;0表示不支持断点下载;1表示支持断点下载,但是保存地址必须与上次地址保持一致。
onStatus(opId,fileSize,percent,status)
参数名称描述
opId操作ID。
fileSize下载文件的大小,单位byte。fileSize = -1 时,就是表示得不到下载大小,无法计算比分比。
percent下载进度,值为0~100的整数值。
status下载状态,0表示正在下载,1表示下载完成,2表示下载出错。
closeDownloader(opId)
参数名称描述
opId标识ID。
getInfo(inDLUrl)
参数名称描述
inDLUrl下载地址。
cbGetInfo(opId,dataType,data)
参数名称描述
opId操作ID,在此函数中不起作用,可忽略。
dataType返回数据的数据类型为uex.cJSON(值为1)。
data

返回的json型的数据。Json格式为{"fileSize":"123456","currentSize":"123","savePath":"var/mobile/Application/xxxxx/Documents/xxxxx.xx”,”lastTime”:”2012-5-23 11:27:12"}

fileSize:文件总大小,单位B。

currentSize:已下载完成大小,单位B。该值只有当上次下载没有完成时才存在,否则返回“0”。savePath:文件保存路径,此路径为目标文件在磁盘上的绝对路径。

lastTime:上次下载的时间,时间格式为yyyy-MM-dd HH:mm:ss,该值只有当上次下载没有完成才存在,否则返回系统当前时间。

clearTask(inDLUrl,inClearMode)

参数名称描述
inDLUrl下载地址
inClearMode清除模式。0代表只清除此次下载任务,并不清除已经下载的目标临时文件。1代表清除此次下载任务,并且清除已经下载的目标临时文件。当目标文件已经成功下载到本地后,此操作不能清除此目标文件。默认为0。

// 本代码由寒暄提供,如有bug请和寒暄联系(QQ:457696322 Q群:7702175)
<!DOCTYPE html>
<html>
<head>
<title>AppCan API uexDownloaderMgr</title>
<meta charset='utf-8'>
<script>
    function isDefine(para) {
        if (typeof para == 'undefined' || para == '' || para == null || para == undefined) return false;
        else return true;
    }
    function $$(id){
        return document.getElementById(id);
    }
    var inOpCode = 1;
    /**
     * 创建下载对象
     */
    function download(){
        uexDownloaderMgr.createDownloader(inOpCode);
    }
    window.uexOnload = function(){
        /**
         * 下载状态监听方法
         * @param {Object} opCode
         * @param {Object} fileSize
         * @param {Object} percent
         * @param {Object} status
         */
        uexDownloaderMgr.onStatus = function(opCode,fileSize,percent,status){
            switch (status) {
                case 0://下载过程中
                    $$('percentage').innerHTML ='文件大小:'+fileSize+'字节<br>下载进度:'+percent;
                    break;
                case 1://下载完成
                    console.log('下载完成');
                    uexDownloaderMgr.closeDownloader(opCode);//下载完成要关闭下载对象
                    break;
                case 2://下载失败
                    console.log('下载失败');
                    uexDownloaderMgr.closeDownloader(opCode);//下载失败要关闭下载对象
                    break;
            }
        }
        var cText = 0;
        var cJson = 1;
        var cInt = 2;
        /**
         * 创建下载对象的回调方法
         * @param {Object} opCode
         * @param {Object} dataType
         * @param {Object} data 0为成功;1为失败
         */
        uexDownloaderMgr.cbCreateDownloader = function(opCode,dataType,data){
            if(dataType==2&&data == 0){
                console.log('创建成功');
                startDownload();
            }else{
                console.log('创建失败');
            }
        }
        uexWidgetOne.cbError = function(opCode,errorCode,errorInfo){
            console.log(errorInfo);
        }
        /**
         * 通过下载url获取下载对象的信息的回调方法
         * @param {Object} opCode
         * @param {Object} dataType
         * @param {Object} data
         */
        uexDownloaderMgr.cbGetInfo = function(opCode,dataType,data){
            if(dataType==1){
                if(!isDefine(data)){
                    console.log('无数据');
                    return;
                }
                console.log(data);
                var info = eval('('+data+')');
                $$('fileInfo').innerHTML ='文件路径:'+info.savePath+'<br>文件大小:'+info.fileSize+'<br>已下载:'+info.currentSize+'<br>下载时间:'+info.lastTime;
            }
        }
    }
    /**
     * 执行下载
     * download(String inOpCode, String inDLUrl, String inSavePath,String inMode)
     * @param {string} inOpCode 操作id
     * @param {string} inDLUrl 下载地址
     * @param {string} inSavePath 保存的地址
     * @param {string} inMode 下载模式 0不支持断点下载; 1支持断点下载
     */
    function startDownload(){
        uexDownloaderMgr.download(inOpCode,$$('downloadPath').value,$$('savedPath').value,'1');
    }
    /**
     * 通过操作ID关闭下载对象
     */
    function closeDownload(){
        uexDownloaderMgr.closeDownloader(inOpCode);
    }
    /**
     * 通过路径获取下载的文件信息
     */
    function getInfo(){
        uexDownloaderMgr.getInfo($$('downloadPath').value);
    }
    /**
     * 通过路径清除未完成下载的任务
     * clearTask(String inDLUrl,String inClearMode)
     * @param {string} inDLUrl 
     * @param {string} inClearMode 清除模式。0代表只清除此次下载任务,并不清除已经下载的目标临时文件。
     * 1代表清除此次下载任务,并且清除已经下载的目标临时文件。
     * 当目标文件已经成功下载到本地后,此操作不能不能清除此目标文件。默认为0。
     */
    function clearInfo(){
        uexDownloaderMgr.clearTask($$('downloadPath').value);
    }
</script>
</head>
<body>
    <span>下载</span><br/>
    <span>下载地址:</span><br/>
    <input id='downloadPath' type='text' value='http://a.hiphotos.baidu.com/image/w%3D2048/sign=0c06965ad788d43ff0a996f24926d21b/4afbfbedab64034f88f5f329aec379310a551de0.jpg' ><br/>
    <span>保存地址:</span><br/>
    <input id='savedPath' type='text' value='wgt://data/down/mm.jpg' ><br/>
    <input type='button' value='下载文件' onclick='download();'><br/>
    <span>文件下载状态</span><br/>
    <div id='percentage'></div><br/>
    <span>结束下载</span><br/>
    <input type='button' value='结束下载' onclick='closeDownload();'><br/>
    <span>得到下载信息</span><br/>
    <input type='button' value='得到下载信息' onclick='getInfo();'><br/>
    <span>文件信息</span><br/>
    <div id='fileInfo'></div><br/>
    <span>清除下载信息</span><br/>
    <input type='button' value='清除下载信息' onclick='clearInfo();'><br/>
</body>
</html>