uni.downloadFile 下载的文件是临时的,名字是下载文件的名字
uni.saveFiled 本地保存 ,名字是时间戳
这里通过HTML5+plus处理,方法比较笨,各位大佬有更好的办法欢迎留言
话不多说直接上菜
// 文件下载
fDownLoadFile() {
uni.downloadFile({
url: 'url下载地址',
success: (res) => {
// console.log(res.tempFilePath)
var sFilePath = res.tempFilePath
if (res.statusCode === 200) {
// console.log('下载成功', res);
uni.saveFile({
tempFilePath: res.tempFilePath,
success: (res) => {
// console.log('保存成功', res);
// console.log(res.savedFilePath)
var savedFilePath = res.savedFilePath;
this.fSetFileName(res.savedFilePath, sFilePath);
}
});
}
},
});
},
// 给下载的文件重命名
fSetFileName(sFilePath, sFileName) {
var sFileName = sFileName.split('/')[sFileName.split('/').length - 1];//原来的文件名
var aFileUrl = sFilePath.split('/').splice(0, sFilePath.split('/').length - 1);//saveFile API保存的本地地址
var url =
'url下载地址(和上面的一样)'
let dtask = plus.downloader.createDownload(url, {
filename: "file://" + aFileUrl.join('/') + '/' + sFileName //利用保存路径,实现文件的重命名
},
(d, status) => {
if (status == 200) {
// console.log(d.filename)
let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
this.fGetSavedFileList();
} else {
//下载失败
plus.downloader.clear(); //清除下载任务
}
})
dtask.start();
},
// 获取已下载列表
fGetSavedFileList() {
uni.getSavedFileList({
success: (res) => {
// console.log(res);
res.fileList.forEach(oData => {
let aRray = oData.filePath.split('/');
let sFileName = aRray[aRray.length - 1].split('.')[0]
if (parseFloat(sFileName).toString() == "NaN") {
//这里是过滤掉文件名是时间戳的文件
console.log(res.fileList);
} else {
//这里是把时间戳的文件删掉
plus.io.resolveLocalFileSystemURL(
oData.filePath,
(entry) => { //获取文件对象
entry.remove((entry) => {
plus.console.log("Remove succeeded");
}, (e) => {
alert(e.message);
});
}
)
}
})
}
});
},