uniapp 下载文件和保存到本地

一、方法一(uni.downloadFile+uni.saveFile)

uni.downloadFile({
	url: url,//文件的下载路径
	success(res) {
		//保存到本地
		uni.saveFile({
			tempFilePath: res.tempFilePath,//文件的临时路径
			success: function(res) {
				const savedFilePath = res.savedFilePath;
				// 打开文件
				uni.openDocument({
					filePath: savedFilePath,
					success: function(res) {
						uni.hideLoading()
					},
					fail: function(res) {},
					complete: function(res) {
						setTimeout(uni.hideLoading(), 4000)
					},
				});
			},
			fail: function(err) {	}
		});
	},
	fail(res) {}
})
##注意:虽然能保存到本地,但是保存的位置非常奇怪
例如:(安卓端)"内部存储\Android\data\io.dcloud.HBuilder\apps\HBuilder\doc\uniapp_save"
位置不方便用户查找,并且文件名在保存到本地的过程中,还被篡改了
所以建议采用方法二

一、方法二(plus.downloader.createDownload+ plus.io.convertLocalFileSystemURL)

##安卓端文件管理内的路径是 file://storage/emulated/0/xx
const downloadTask = plus.downloader.createDownload(url,//文件的下载地址 {
						filename: 'file://storage/emulated/0/xx/' + name, //服务器 app 的下载地址
					}, function(downloadResult,status) {
						uni.hideLoading();
						if (status == 200) {
			//downloadResult.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径
							let fileSaveUrl = plus.io.convertLocalFileSystemURL(downloadResult
											.filename);
							plus.runtime.openFile(d.filename); //选择软件打开文件
							uni.showToast({
								icon: 'none',
								mask: true,
								title: `文件已保存` , //保存路径
								duration: 3000,
							});
						}else {//下载失败
							console.log("下载失败")
							plus.downloader.clear(); //清除下载任务
						}
					}


				);
				downloadTask.start();//执行下载

版权声明:本文为shelter123456原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。