关于uni.downloadFile与uni.saveFiled文件名不一,已解决

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);
										});
									}
								)
							}
						})
					}
				});
			},

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值