uni-app中uni.saveFile在安卓11系统上成功回调里调用plus.io.getFileInfo失败

uni-app中uni.saveFile在安卓11系统上成功回调里调用plus.io.getFileInfo失败

uni.saveFile在安卓11系统上成功回调里面调用plus.io.getFileInfo失败会报15,但是应该怎么修改呢

2 回复

已解决,改为uni.getFileInfo就可以了

更多关于uni-app中uni.saveFile在安卓11系统上成功回调里调用plus.io.getFileInfo失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在安卓11系统上,uni.saveFile成功回调后调用plus.io.getFileInfo返回错误码15,通常是由于文件路径权限问题导致的。安卓11加强了分区存储(Scoped Storage)限制,应用无法直接通过绝对路径访问某些目录下的文件。

解决方案:

  1. 使用uni.downloadFile下载文件时,若需保存到本地,建议直接使用其返回的临时路径进行操作,避免额外保存步骤。
  2. 若必须使用uni.saveFile,可尝试通过以下方式获取文件信息:
    • uni.saveFile的成功回调中,使用其返回的savedFilePath作为参数,调用plus.io.getFileInfo
    • 若仍报错,检查路径是否为应用私有目录(如_doc/_downloads/等),确保路径在应用可访问范围内。
  3. 对于需要持久化存储的文件,推荐使用uni.saveFile保存到应用私有目录(如_doc/),再通过plus.io.getFileInfo获取信息。

示例代码:

uni.downloadFile({
  url: 'https://example.com/file.pdf',
  success: (res) => {
    if (res.statusCode === 200) {
      uni.saveFile({
        tempFilePath: res.tempFilePath,
        success: (saveRes) => {
          plus.io.getFileInfo(saveRes.savedFilePath, (fileInfo) => {
            console.log('File size:', fileInfo.size);
          }, (error) => {
            console.error('getFileInfo failed:', error);
          });
        }
      });
    }
  }
});
回到顶部