我无法使用 RNFS 使用从 RNCameraRoll 获取的 phasset 读取文件

Posted

技术标签:

【中文标题】我无法使用 RNFS 使用从 RNCameraRoll 获取的 phasset 读取文件【英文标题】:I can't read file using RNFS using phasset taken from RNCameraRoll 【发布时间】:2019-07-24 08:13:52 【问题描述】:

我正在尝试验证从 React Native 中的 CameraRoll 中选择的图像的文件大小。我的代码适用于 android,但不适用于 ios,因为 RNFS.readFile 不支持 PHASSETS。有没有其他方法可以在 react native 中验证图像的文件大小?

我也尝试过使用 RNFS 的 copyAssetsFileIOS

RNFS.copyAssetsFileIOS(path, RNFS.TemporaryDirectoryPath, 0, 0)
        .then(res => console.log('RES: ', res))
        .catch(err => console.log('ERROR: ', err));

我也尝试过将 PHASSET 转换为 ALASSET

path = `assets-library://asset/asset.$ext?id=$path.substr(9)&ext=$ext`;

这是我的代码,适用于 Android,但不适用于 IOS

RNFS.readFile(path, 'base64')
      .then(res => 
        // eslint-disable-next-line no-undef
        const str = Platform.OS === 'ios' ? base64.decode(res) : atob(res);
        const fileSize = str.length;
        if (fileSize < 3000000)
          this.setState(
            imageSource: source,
            hasExceededLimit: false,
          );
        else this.setState( hasExceededLimit: true );
      )
      .catch(() => this.setState( hasExceededLimit: true ));

【问题讨论】:

【参考方案1】:

iOS 是沙盒化的,这意味着您无法直接读取/写入 App Bundle 之外的任何文件。 要访问 iOS 照片库中的照片/视频,请使用照片框架中的方法。

【讨论】:

谢谢,但是如何在 React Native 中使用 Photos-Framework?

以上是关于我无法使用 RNFS 使用从 RNCameraRoll 获取的 phasset 读取文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 RNFS 在本机反应上读取 Json 文件

rnfs软件服务利用ansible实现一键化部署

无法在写入事务之外修改托管对象 - React Native,Realm

无法使用 SSH 从 BitBucket 克隆

无法使用 XPath 从网页获取价格

当我从 setWebChromeClient 使用时,我无法从 onPageStarted webView 使用 - Android