/**
- {url} 下载地址
- {name} 保存文件时 重命名
- {cb1,cb2} 下载进度和完成 的回调
- :下载大文件“可能”会内存溢出
- */
export default (url,name,cb1,cb2) => {
let progressVal = 0;
var dtask = plus.downloader.createDownload(url,{
filename:“_downloads/”+name //利用保存路径,实现下载文件的重命名
},function(d,status){
//d为下载的文件对象
if(status==200){
console.log(“下载成功”,d)
//下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径
var fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
plus.runtime.openFile(d.filename); //选择软件打开文件
}else{
//下载失败
console.log(“下载失败”,d)
plus.downloader.clear(); //清除下载任务
}
})
dtask.addEventListener(‘statechanged’, (task) => {
if (!dtask) {
return;
}
// no default
switch (task.state) {
case 1:
console.log('开始下载');
break;
case 2:
console.log('链接到服务器...');
break;
case 3:
progressVal = (changeTwoDecimal_f(task.downloadedSize / task.totalSize) * 100) + "%";
if(cb1) cb1(progressVal)
break;
case 4:
console.log('监听下载完成');
if(cb2) cb2()
break;
}
});
dtask.start();
}
/**
- 例如
- 2 → 2.00
- 2.3 → 2.30
- 2.321 → 2.32
- 2.328 → 2.33
- /
function changeTwoDecimal_f(x)
{
var f_x = parseFloat(x);
if (isNaN(f_x))
{
return 0;
}
var f_x = Math.round(x100)/100;
var s_x = f_x.toString();
var pos_decimal = s_x.indexOf(‘.’);
if (pos_decimal < 0)
{
pos_decimal = s_x.length;
s_x += ‘.’;
}
while (s_x.length <= pos_decimal + 2)
{
s_x += ‘0’;
}
return s_x;
}