uni-app文件下载,获取已下载列表以及文件预览Android和IOS的处理(非视频图片。)

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, '打开文档失败')
					}
				});
			},

备注:上面有的是查了网上的资料。我在这里只是吧他们总结了下,方便大家直接使用 (如有侵权请联系我)

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值