Как скачать PDF-файл в реагировать родной?

Я создаю приложение с React Native и Expo для Android и iOS. Я пытаюсь позволить пользователю загрузить файл PDF при нажатии на кнопку. Я работаю над этим пару дней и нахожу следующие пакеты:

  1. реагировать-нативную выборку-клякса / гп-выборку-блобо
  2. реагируют родное фс

первый поднимает:
undefined не является объектом (оценка 'RNFetchBlob.DocumentDir')
и для второго ошибка:
undefined не является объектом (оценка 'RNFSManager.RNFSFileTypeRegular')

Ранее я тестировал ссылку npm, извлечение пряжи, перезапуск упаковщика и некоторые другие обходные пути от GitHub и stackoverFlow, но моя проблема еще не решена.

любая помощь высоко ценится. Спасибо.

1 ответ

Если вы знакомы с редуксом, вот как я это сделал:

// Action creator
export const downloadItem = (uri, id) => dispatch =>
  RNFetchBlob.config({
    fileCache: true,
    // Where it will be located on the phone
    path: RNFetchBlob.fs.dirs.CacheDir + "/" + SHA1(uri) + ".pdf",
    // So I can easily delete all my files by reference if I need to
    session: "all"
  })
    .fetch("GET", uri)
    .progress({ count: 10 }, (received, total) => {
      dispatch({
        type: "DOWNLOAD_PROGRESS",
        id,
        progress: received / total
      });
    })
    .then(res => {
      dispatch({
        type: "DOWNLOAD_COMPLETE",
        id,
        path: res.path()
      });
    })
    .catch(error => {
      dispatch({
        type: "DOWNLOAD_ERROR",
        id,
        error: String(error)
      });
    });

res.path() будет URI, где вы можете найти его позже. Если вы хотите сохранить какой-либо путь к файлу где-нибудь, чтобы потом открыть его, вы можете использовать что-то вроде firebase или, как я это сделал, redux persist.

Другие вопросы по тегам