网络下载功能实现(downloader ) ---- HTML5+

模块downloader 

Downloader模块管理网络文件下载任务,用于从服务器下载各种文件,并支持跨域访问操作。通过plus.downloader获取下载管理对象。Downloader下载使用HTTP的GET/POST方式请求下载文件,符合标准HTTP/HTTPS传输协议。

应用场景:音频下载,视频下载,文件下载,数据缓存(断网操作);

Downloader对象:downloader

plus.downloader.createDownload( url, options, completedCB );

对象:plus.downloader.createDownload(url,options,completedCB);

url:需要下载的文件的地址;

options:属性非常多:

method: (String 类型 )网络请求类型
支持http协议的“GET”、“POST”,默认为“GET”请求。

data: (String 类型 )POST请求时提交的数据
仅在网络请求类型method设置为"POST"时有效,"GET"请求时忽略此数据。

filename: (String 类型 )下载文件保存的路径
保存文件路径仅支持以"_downloads/"、"_doc/"、"_documents/"开头的字符串。 文件路径以文件后缀名结尾(如"_doc/download/a.doc")表明指定保存文件目录及名称,以“/”结尾则认为指定保存文件的目录(此时程序自动生成文件名)。 如果指定的文件已经存在,则自动在文件名后面加"(i)",其中i为数字,如果文件名称后面已经是此格式,则数字i递增,如"download(1).doc"。 默认保存目录为("_downloads"),并自动生成文件名称。

priority: (Number 类型 )下载任务的优先级
数值类型,数值越大优先级越高,默认优先级值为0。

timeout: (Number 类型 )下载任务超时时间
数值类型,单位为s(秒),默认值为120s。 超时时间为服务器响应请求的时间(不是下载任务完成的总时间),如果设置为0则表示永远不超时。

retry: (Number 类型 )下载任务重试次数
数值类型,默认为重试3次。

retryInterval: (Number 类型 )下载任务重试间隔时间
数值类型,单位为s(秒),默认值为30s。

Downloader对象属性和方法

readonly attribute String id;
readonly attribute String url;
readonly attribute Number state;
readonly attribute DownloadOptions options;
readonly attribute String filename;
readonly attribute Number downloadedSize;
readonly attribute Number totalSize;
function void abort();
function void addEventListener( String event, function Callback listener, Boolean capture );
function String getAllResponseHeaders();
function String getResponseHeader( headerName );
function void pause();
function void resume();
function void setRequestHeader( String headerName, String headerValue );
function void start();

方法

plus.downloader.clear( state );// 清除下载任务
plus.downloader.startAll(); // 开始所有的下载任务

具体示例

<header class="mui-bar mui-bar-nav">
    <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
    <h1 class="mui-title">下载管理</h1>
</header>
<div class="mui-content mui-content-padded">
    <button type="button" id="btnDownload" class="mui-btn mui-btn-blue mui-btn-block">下载</button>
    <ul id="downloadlist"></ul>
    <img src="" id="downloadImg" alt="" />
</div>
<script src='http://libs.baidu.com/jquery/1.8.3/jquery.min.js'></script>
<script src="js/mui.min.js"></script>
<script type="text/javascript">
mui.plusReady(function(){
    var dtask=null;
    $("#btnDownload").bind('tap',function(){
        // 第一步:创建下载任务        
        var url = "http://img5.img.9xiu.com/upload/roomimg/2017/11/05/27976195201433p14we39unu_370x280.jpg";
        var options = {method:"GET"};
        dtask = plus.downloader.createDownload(url,{
            filename:"_doc/download/a.jpg"
        },function(download,status){
            plus.io.resolveLocalFileSystemURL(download.filename,function(entry){
                mui.alert('completed');
                $("#downloadlist").append("<p>"+download.filename+"</p>");
                $("#downloadlist").append("<p>"+entry.fullPath+"</p>");
                $("#downloadImg").attr('src',entry.fullPath);
            });
        });        
        dtask.start();
    });
});
</script>
原文地址:https://www.cnblogs.com/e0yu/p/7850400.html