Как использовать moveFile response-native-fs - PullRequest
0 голосов
/ 07 октября 2019

Мне нужно поделиться локальным изображением на реагирующем родном приложении, использовать реактивный общий ресурс и реактивный-native-fs. Изображение находится в локальной папке в корневом приложении с именем 'images'. Как поделиться этим изображением. Нужно ли мне копировать или перемещать изображение в темп и использовать это изображение для получения абсолютного пути.

Это мой код. rnfs.movefile не работает

getAssetFileAbsolutePath = async () => {
  const dest =
  `${RNFS.TemporaryDirectoryPath}${Math.random().toString(36)
   .substring( 
    .7)}.png`;
  const img = './images/page1.png';
  try {
    await RNFS.moveFile(img, dest);
    console.log("dobro", dest)
  } catch(err) {
    console.log("greska", err)
  } 
 }

Я получаю сообщение об ошибке «page1.png» не может быть перемещен в «tmp», так как либо первый не существует, либо папка, содержащая последний, не 'не существует.

1 Ответ

0 голосов
/ 07 октября 2019

используйте rn-fetch blob с реагирующим собственным ресурсом, сначала найдите путь к изображению и преобразуйте его в base64. тогда поделитесь изображением используйте реагируйте на собственный пакет

ShareFile(file) {
    let imagePath = null;
    RNFetchBlob.config({
        fileCache: true
    })
    .fetch("GET", file)
    // the image is now dowloaded to device's storage
    .then(resp => {
        // the image path you can use it directly with Image component
        imagePath = resp.path();
        return resp.readFile("base64");
    })
    .then(async base64Data => {
        var base64Data = `data:image/png;base64,` + base64Data;
        // here's base64 encoded image
        await Share.open({ url: base64Data });
        // remove the file from storage
        return fs.unlink(imagePath);
    });
}
...