uniapp:下载文件,并保存到手机文件夹

方法一

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"
位置不方便用户查找,并且文件名在保存到本地的过程中,还被篡改了
所以建议采用方法二

方法二

uni.showLoading({
title: '正在下载'
});
// 本地路径开头使用file://,跟上手机文件本地目录storage/emulated/0,
// 这时用户文件管理器能看到的了,之后创建 连信 作为文件夹,
// 后缀是用于文件命名和格式修改,大家可以使用变量。
var url = this.downFileSrc;
let dtask = plus.downloader.createDownload(url, {
	filename: "file://storage/emulated/0/连信/" + this.downFileName //利用保存路径,实现下载文件的重命名
},(d, status)=> {
	//d为下载的文件对象
	if (status == 200) {
		uni.hideLoading();
		uni.showToast({
			icon: 'none',
			mask: true,
			title: '已保存到文件夹:/连信/' + this.downFileName, //保存路径
			duration: 3000,
		});
		//下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径
		let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
		setTimeout(()=>{
			plus.runtime.openFile(d.filename); //选择软件打开文件
		},1500)
	} else {
		//下载失败
		uni.hideLoading();
		plus.downloader.clear(); //清除下载任务
		uni.showToast({
			icon:'none',
			mask:true,
			title: '下载失败,请稍后重试',
		});
	}
})
dtask.start();

在这里插入图片描述
在这里插入图片描述

  • 25
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
uniapp中,要将文件保存到指定目录,可以通过uniapp文件管理器来实现。以下是具体步骤: 1. 首先,在uniapp的项目目录下创建一个文件夹用于保存文件。可以在`static`目录下创建一个新的文件夹,例如`save`。 2. 在需要保存文件的页面中,引入uniapp文件管理器: ```javascript import { getFileSystemManager } from '@uni/file' ``` 3. 在需要保存文件的位置调用文件管理器的方法来保存文件,例如保存一个图片: ```javascript // 获取文件系统管理器 const fileManager = getFileSystemManager() // 给文件起一个新的名字 const fileName = 'newImage.jpg' // 要保存文件的临时路径 const tempFilePath = 'path/to/temp/image.jpg' // 待保存的目标路径 const savePath = `static/save/${fileName}` // 使用文件管理器的方法将文件保存到指定目录 fileManager.saveFile({ tempFilePath, filePath: savePath, success: function(res) { console.log('保存成功', res.savedFilePath) }, fail: function(err) { console.log('保存失败', err) } }) ``` 4. 在上述代码中,`tempFilePath`是要保存文件的临时路径,`savePath`是待保存的目标路径,其中`static/save/`是步骤1中创建的文件夹的路径,`fileName`是保存后的文件名。 通过以上步骤,就可以将文件保存到指定目录中了。需要注意的是,保存文件的路径必须是相对于项目根目录的路径,需要使用正确的相对路径来指定保存路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值