React Native 保存 App 内图片到本地

本来应该很简单的事情硬是搜了半个小时……

2018年1月17号。

开篇先吐槽下,这么简单的事情本以为搜搜谷歌然后从 react-native-fs 或者 react-native-fetch-blob 的相关文档里复制粘贴3-5行代码搞定
结果硬是搞了半个小时+ (没跟踪具体花了多久时间,起码半小时)

需求

有一张微信公众号的二维码图片(叫 wechat.jpg),
保存在 React Native 项目中。

App 里有一个页面显示了这个二维码,
现在需要的功能是用户点击这个二维码图片后,把二维码图片保存到本地。
图片已经在 App 内部了,这里没必要发网络请求

解决方法

注:这个方案针对 Android。iOS 我没试。

第一步

把图片复制一份到 /android/app/src/main/assets/wechat.jpg
这个路径是 Android Assets Folder。

第二步:测试文件是否存在

RNFS.existsAssets('wechat.jpg').then((result) => console.log(result));

第三步:保存二维码图片文件到手机

import RNFetchBlob from 'react-native-fetch-blob';
import RNFS from'react-native-fs';

  let dirs = RNFetchBlob.fs.dirs
  const file_path = dirs.DCIMDir + '/' + 'wechat.jpg';
  RNFS.copyFileAssets('wechat.jpg', file_path)
  .then(() => {
    RNFetchBlob.fs.scanFile([{ path: file_path }])
  })
  .catch((error) => console.log(error));