uniapp官方api中uni.downloadFile不支持app。这里查了网上的方法总结了下
这些方法支持各种常见的文件(视频。照片。文档。表格。AND SO ON)
判断当前使用的设备
// 判断设备
fJudgePlatForm() {
let platform = uni.getSystemInfoSync().platform;
if (platform == 'ios') {
console.log('我是iOS')
} else if (platform == 'android') {
console.log('我是安卓')
}
},
Android
Android 运用了HTML5+plus
// 文件下载-自定义下载目录 -- 安卓
fDownLoadFileAndroid() {
var url = '这是下载的链接'
let dtask = plus.downloader.createDownload(url, {
/**
* 本地路径开头使用file://,跟上手机文件本地目录storage/emulated/0,就是用户文件管理器能看到的了,
* 后缀是用于文件命名和格式修改
* file://storage/emulated/0/后面就是用户文件管理的第一层,可以创建目录,
* */
filename: "file://storage/emulated/0/在这里可以创建自定义目录/" + "这里放文件名,可以对文件重命名(注:这里要带上文件后缀名).docx"
},
(d, status) => {
//d为下载的文件对象
if (status == 200) {
console.log(d, '下载成功', status);
//下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径
let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
// plus.runtime.openFile(d.filename); //选择软件打开文件
this.fGetSavedFileList();
} else {
//下载失败
plus.downloader.clear(); //清除下载任务
}
})
dtask.start();
},
// 获取本地的已下载文件列表
fGetSavedFileList() {
this.aFileList = [];
plus.io.resolveLocalFileSystemURL(
"file://storage/emulated/0/这里是你上面自定义的目录/", //指定的目录
(entry) => {
var directoryReader = entry.createReader(); //获取读取目录对象
directoryReader.readEntries(
(entries) => { //返回的是指定文件夹下的文件列表和 uni.getSavedFileList(OBJECT)效果一样
// console.log(entries)
this.aFileList = entries
},
(err) => {
console.log("访问目录失败");
});
},
(err) => {
console.log("访问指定目录失败:" + err.message);
});
},
// 安卓打开文档
fOpenFileAndroid(oFile) {
//oFile是上面获取本地的已下载文件列表中的对象
// console.log(oFile)
plus.runtime.openFile(oFile.fullPath); //打开文件
},
IOS
IOS 就使用uniapp官方的api就可以
// 文件下载--IOS
fDownLoadFileIos() {
uni.downloadFile({
url: '这里是下载的地址',
success: (res) => {
if (res.statusCode === 200) {
// console.log('下载成功', res);
uni.saveFile({
tempFilePath: res.tempFilePath,
success: (res) => {
// console.log('保存成功', res);
var savedFilePath = res.savedFilePath;
this.fGetSavedFileList();
}
});
}
}
});
},
// 获取本地的已下载文件列表
fGetSavedFileList() {
this.aFileList = [];
uni.getSavedFileList({
success: (res) => {
// console.log(res);
console.log(res.fileList,'已下载的文件列表');
}
});
}
// ios打开文档
fOpenFileIos(oData) {
//上面的获取本地的已下载文件列表中的对象
uni.openDocument({
filePath: oData.filePath,
showMenu: true,
success: (res) => {
console.log(res, '打开文档成功')
},
fail: (res) => {
console.log(res, '打开文档失败')
}
});
},
备注:上面有的是查了网上的资料。我在这里只是吧他们总结了下,方便大家直接使用 (如有侵权请联系我)