React Native Camera Roll возвращает неверный путь только для iOS - PullRequest
0 голосов
/ 13 июля 2020

У меня есть функция, в которой пользователи могут импортировать изображение QR-кода из галереи телефона, и после импорта я декодирую его, используя jsQR . Он отлично работает для Android, но не для iOS.

Вот мой код ниже:

const handleImportScan = useCallback(async () => {
    try {
      // @ts-ignore
      const uri = normalizeUri(photos[selected].node.image.uri);
      const base64Image = await RNFS.readFile(uri, 'base64');
      const png = PNG.sync.read(Buffer.from(base64Image, 'base64'));

      const code = jsQR(
        Uint8ClampedArray.from(png.data),
        png.width,
        png.height,
      );
      console.log('code:', code);
      if (code) {
        console.log('Found QR code', code);
      }
    } catch (error) {
      console.log('err:', error);
    }
  }, [photos, selected]);

и вот моя ошибка:

err: Error: ENOENT: no such file or directory, open 'ph://CF888AC5-F690-45E8-8D05-9FFFDB8FE367/L0/001'
at promiseMethodWrapper (NativeModules.js:103)
at readFileGeneric (FS.common.js:160)
at Object.readFile (FS.common.js:310)
at _callee$ (VM6 ScanQRfromLib.bundle:150)
at tryCatch (runtime.js:45)
at Generator.invoke [as _invoke] (runtime.js:274)
at Generator.prototype.<computed> [as next] (runtime.js:97)
at tryCatch (runtime.js:45)
at invoke (runtime.js:135)
at runtime.js:170

Я получаю эту ошибку из следующей строки:

const base64Image = await RNFS.readFile(uri, 'base64');

Благодарю, если кто-то может помочь. Спасибо

...