uni-app uni.saveFile 在 ios 端报错 saveFile:fail 不允许读

发布于 1周前 作者 caililin 来自 Uni-App

uni-app uni.saveFile 在 ios 端报错 saveFile:fail 不允许读

开发环境 版本号 项目创建方式
Windows 23H2 HBuilderX
iOS iOS 16

示例代码:

uni.saveFile({  
    tempFilePath: re.tempFilePath,  
    success: function(res2) {  
        console.log(res2)  
        var savedFilePath = res2.savedFilePath;  
        let obj = {  
            filePath: savedFilePath,  
            fileSize: res.size  
        }  
        that.uploadAndSaveInfo(obj, function(res) {  
            console.log(res)  
            if (res && res.code == 1) {  
                setTimeout(that.getFileListSql(), 100)  
            }  
        })  
    },  
    fail:function(err){  
        console.log(err)  
    }  
});

操作步骤:

  • ios调用uni.saveFile

预期结果:

  • 正常success

实际结果:

{
"errMsg": "saveFile:fail 不允许读",
"errCode": 4,
"code": 4
}

bug描述:

苹果调用uni.saveFile时报错

{
"errMsg": "saveFile:fail 不允许读",
"errCode": 4,
"code": 4
}

2 回复

应该先判断是否有读写的权限吧


在处理 uni-appuni.saveFile 方法在 iOS 端报错 “saveFile:fail 不允许读” 的问题时,首先需要确认几个关键点:权限配置、路径问题以及调用方法是否正确。以下是一些可能的解决方案和代码示例,供您参考:

1. 确认权限配置

在 iOS 上,应用需要相应的权限才能访问文件系统。尽管 uni-app 通常会处理大部分权限请求,但确保在原生配置文件中(如 manifest.json 和 iOS 原生项目的 Info.plist)已经声明了必要的权限。

manifest.json 中配置

"mp-weixin": { // 或其他平台配置
  "appid": "your-app-id",
  "permission": {
    "scope.writePhotosAlbum": {
      "desc": "你的位置信息将用于保存图片到相册"
    },
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示"
    }
    // 其他权限配置
  }
}

注意:uni-app 的权限配置主要针对微信小程序等平台,iOS 原生权限需在 Xcode 中配置。

2. 检查文件路径

确保传递给 uni.saveFile 的路径是有效的。在 iOS 上,路径问题可能会导致权限错误。

示例代码

uni.getFileSystemManager().getFileInfo({
  filePath: 'path/to/your/file', // 确保这是有效的路径
  success: (res) => {
    console.log('File info:', res);
    // 保存文件
    const tempFilePath = res.path;
    const targetPath = `${uni.env.USER_DATA_PATH}/my_saved_file`;
    uni.saveFile({
      tempFilePath: tempFilePath,
      filePath: targetPath,
      success: () => {
        console.log('File saved successfully');
      },
      fail: (err) => {
        console.error('Failed to save file:', err);
      }
    });
  },
  fail: (err) => {
    console.error('Failed to get file info:', err);
  }
});

3. 调试和日志

  • 使用控制台日志:在 fail 回调中打印详细的错误信息,有助于定位问题。
  • Xcode 日志:如果问题依旧存在,可以在 Xcode 中运行应用,查看控制台输出的原生错误信息。

4. 更新和兼容性

确保 uni-app 和所有相关依赖都是最新版本,有时候问题可能由旧版本的 bug 导致。

通过上述步骤,您应该能够定位并解决 uni.saveFile 在 iOS 端遇到的 “saveFile:fail 不允许读” 错误。如果问题依旧,建议查阅官方文档或社区论坛,看看是否有其他开发者遇到并解决了类似的问题。

回到顶部