关键代码如下
1.HTML
<button onclick="downloadFile(this)">点击下载</button>
2.JS
function downloadFile(obj) {
plus.nativeUI.showWaiting("正在下载...");
var filetype = 'docx'; // 附件类型
var filenames = '新建Microsoft Word文档'; // 附件名称
var filedownurl = "http://10.79.112.42:8080/test"; //附件路径
//初始化下载对象
var dtask = null;
//判断文件是否已经下载
plus.io.resolveLocalFileSystemURL('_downloads/' + filenames, function(entry) {
if(entry.isFile) {
mui.toast('已经下载');
var btnArray = ['否', '是']; //弹框消息确认是否打开附件
mui.confirm('是否打开附件查看?', '下载成功', btnArray, function(e) {
plus.nativeUI.closeWaiting();
if(e.index == 1) { //打开附件
plus.runtime.openFile('_downloads/' + filenames, {}, function(e) {
plus.nativeUI.alert('请先下载再预览!');
});
} else { //不打开
}
})
}
}, function(e) {
if(dtask) {
mui.toast('下载任务已经存在');
return;
}
dtask = plus.downloader.createDownload(
filedownurl, {
method: 'GET'
},
function(d, status) {
mui.toast(d.filename);
});
dtask.addEventListener("statechanged", function(task, status) {
if(!dtask) {
return;
}
switch(task.state) {
case 1:
mui.toast('开始下载...');
break; //开始
case 2:
mui.toast('链接到服务器...');
break; //链接到服务器
case 3:
break;
case 4:
plus.nativeUI.closeWaiting();
mui.toast('下载完成');
var btnArray = ['否', '是']; //弹框消息确认是否打开附件
mui.confirm('是否打开附件查看?', '下载成功', btnArray, function(e) {
plus.nativeUI.closeWaiting();
if(e.index == 1) { //打开附件
plus.runtime.openFile('_downloads/' + filenames, {}, function(e) {
plus.nativeUI.alert('请先下载再预览!');
});
} else { //不打开
}
})
break;
}
});
//|| filetype === 'exe' || filetype === 'bat' || filetype === 'html'
if(filetype === 'pdf' || filetype === 'exe' || filetype === 'bat' || filetype === 'html') {
plus.nativeUI.closeWaiting();
dtask.cancel(); //取消下载
}
dtask.start();
});
}
···
效果如图:
下载效果
网友评论