将本地文件复制到文档文件夹

时间:2018-11-08 00:46:50

标签: react-native react-native-fetch-blob

不幸的是,RN无法将字符串变量用作require()的参数。因此,如果您需要创建一个简单的3x3记忆游戏,那么您需要在每个正方形上渲染与本地文件夹不同的图像:算了吧。

我正在尝试为此创建解决方法:将文件从src / assets /*.**复制到文档文件夹。但这不起作用。

我的应用程序的结构如下:

/root folder
+---/android
+---/ios
+---/src
    +---/assets
           +----/x.png
           +----/y.png
    +---/index.js

在index.js上,我有以下代码行:

 RNFetchBlob.fs.cp("bundle-assets://../../assets/x.png", 
 RNFetchBlob.fs.dirs.DocumentDir +'/x.png')
            .then(() => { alert('done') })
            .catch((e) => { alert(e) })

我正在使用react-native-fetch-blob复制文件,因此复制后我可以使用source = {uri:myFile}并动态加载图像。

实际上,此代码不会引发错误,并在目标位置创建零长度的文件。有任何线索吗?

1 个答案:

答案 0 :(得分:0)

好吧,您不能在require中动态更改字符串,但是可以动态更改图像的来源,我相信这将是针对您情况的更简单的解决方法。例如,您可以为以下内容设置要求选择器:

let randomNumber = Math.floor((Math.random() * 10)/2);
let imageSource = null;
switch (randomNumber) {
    case 0:
        imageSource = require('./image1.jpg');
        break;
    case 1:
        imageSource = require('./image2.jpg');
        break;
    case 2:
        imageSource = require('./image3.jpg');
        break;
    case 3:
        imageSource = require('./image4.jpg');
        break;
    default:
        imageSource = require('./image5.jpg');
        break;
}

然后将您的图片中的imageSource与:

<Image source={imageSource} />