Как скачать файл с React Native?

Я создаю приложение с React Native для Android и iOS. Я пытаюсь позволить пользователю загрузить PDF-файл при нажатии на кнопку.

  • react-native-файл-скачать не поддерживает Android
  • react-native-fs ничего не делает, когда я запускаю downloadFile (ничего не отображается на панели уведомлений), и я не могу найти файл после этого. Я добавил android.permission.WRITE_EXTERNAL_STORAGE в файл манифеста Android. Я дважды проверил, что файл, который я пытаюсь загрузить, существует (когда это не так, библиотека выдает ошибку)

Я не нахожу других решений для этой проблемы. Я нашел библиотеки для просмотра PDF, но я хотел бы, чтобы пользователь загрузил PDF. Не могли бы вы мне помочь?

2 ответов


только что реализовал функцию загрузки час назад: p

выполните следующие действия:

a) npm install react-native-fetch-blob

b) следуйте инструкциям по установке.

b2) если вы хотите вручную установить пакет без использования rnpm, перейдите к их wiki.

c) наконец, вот как я сделал возможным загружать файлы в моем приложении:

const { config, fs } = RNFetchBlob
let PictureDir = fs.dirs.PictureDir // this is the pictures directory. You can check the available directories in the wiki.
let options = {
  fileCache: true,
  addAndroidDownloads : {
    useDownloadManager : true, // setting it to true will use the device's native download manager and will be shown in the notification bar.
    notification : false,
    path:  PictureDir + "/me_"+Math.floor(date.getTime() + date.getSeconds() / 2), // this is the path where your downloaded file will live in
    description : 'Downloading image.'
  }
}
config(options).fetch('GET', "http://www.example.com/example.pdf").then((res) => {
  // do some magic here
})

если вы используете Expo,react-native-fetch-blob не работает. Использовать FileSystem.

вот пример:

const { uri: localUri } = await FileSystem.downloadAsync(remoteUri, FileSystem.documentDirectory + 'name.ext');

теперь у вас есть localUri путь к загруженному файлу. Не стесняйтесь устанавливать собственное имя файла вместо name.ext.