uni-app下载文件(plus.downloader.createDownload)
/**
* {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(x*100)/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;
}
plus.downloader.createDownload下载默认存放路径
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」