uniapp下载文件后更改文件名称
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回调方法中。
更多推荐
已为社区贡献6条内容
所有评论(0)