uniapp下载文件后更改文件名称

公司uniapp项目在调用接口下载文件的时候,这个接口通过网页浏览器访问是能够正常下载一个xlsx类型的文件。但是通过调用uni.downloadFile方法下载该文件时候,临时文件没有带上后缀,而且文件名称还是接口名称。

在uni.downloadFile的success回调方法中,打印了一下临时文件在手机中的路径。

plus.io.convertLocalFileSystemURL(res.tempFilePath)

在手机目录中查看的时候,这个文件是一个BIN文件,但是网页浏览器访问下载的时候,是一个xlsx文件。而且,也正是需要展示这个类型的文件。后面调用uni.openDocument方法打开文件时也总是打开失败。报错消息:“ fail not found 3th activity”没有找到对应的第三方软件来打开。尽管这个文件没有后缀,并且openDocument也指定了fileType为xlsx。

只能通过更改文件名称来解决这个办法。

// 拿到临时文件的绝对路径
let filepathss=plus.io.convertLocalFileSystemURL(res.tempFilePath);
// 通过这个路径来拿到他
plus.io.resolveLocalFileSystemURL(filepathss,function(entry){
	const tempFileName = entry.name;
	entry.getParent(function (parentDicEntry) {
		console.log(parentDicEntry.fullPath)
		entry.moveTo({ fullPath: parentDicEntry.fullPath+'/'},'新的文件名字.xlsx',function (newFile) {
			uni.openDocument({
				fileType: 'xlsx',
				filePath: newFile.fullPath,
				success: function (res2) {
					console.log('打开文档成功');
				},
				fail: function (err) {
					if(err.errCode == 1 || err.code == 1){
						uni.showToast({
							title: `未找到能打开xlsx类型文件的手机应用`,
							icon: 'none'
						})
					}
					console.log(err)
				}
			});
		},function(moveError){
			uni.showToast({
				title: `已在第三方应用中打开过,请在第三方应用查看时保存`,
				icon: 'none'
			})
		})
	})
})

上面这个方法并没有改变文件的路径,放在了相同的路径下面,取了一个新的名称。但是这个方法有一个问题,因为这个路径下面保存的是临时文件,在我本地手机上测试的时候,第二次调用接口去下载的时候,会进入到moveTo的errorCB回调方法中。于是我只能提示这个文件在第三方应用中打开过。

因为是临时文件,在退出app重新打开的时候,再次下载还是没问题的。

文件的名称最好不要重名,不然会进到moveTo的errorCB回调方法中。 

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值