Как получить файл из URI | Экспо | React Native - PullRequest
0 голосов
/ 05 ноября 2018

Я выбросил проект выставки.

После изменения info.plist , теперь я могу получить свое приложение в списке «открыть с помощью списка приложений» и фактически могу открыть этот файл с моей выставкой (React native app).

App.js

Linking.getInitialURL().then((url) => {
  if (url) {
        console.log(url);
    }

}).catch(err => console.error('An error occurred', err));

этот код дает мне этот URL.

file:///private/var/mobile/Containers/Data/Application/7E55EB55-7C49-4C0C-B4CB-63AC4F49689E/Documents/Inbox/matters-3.csv

Итак, это означает, что теперь у меня есть URL-адрес вложения электронной почты, но как я могу получить данные этой строки CSV в моем приложении?

Итак, я предполагаю, что когда я нажимаю кнопку Открыть в моем приложении. URL, который передается в мое приложение из системы, фактически является копией документа, который находится где-то в каталоге нашего приложения.

Но когда я пытаюсь получить доступ к этому файлу с помощью Expo.FileSystem. readAsStringAsync выдает ошибку говорит, что файл не читается.

есть ли какое-либо отношение к разрешению на хранение?

Нужна помощь ....?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Вы можете использовать response-native-fs, как упомянул Карло, или rn-fetch-blob , я рекомендую rn-fetch-blob, чтобы прочитать файл, который вы можете проверить их документацию, он выглядит примерно так

let data = '';
RNFetchBlob.fs.readStream( ...options).then((ifstream) => {
ifstream.open()
ifstream.onData((chunk) => {
  data += chunk
  // show progress ...%
})
ifstream.onError((err) => {
  console.log('oops', err)
})
ifstream.onEnd(() => {  
  consol.log('final data', data)
})

}))

0 голосов
/ 18 декабря 2018

Я думаю, вы могли бы использовать реагировать-родной-фс . Это должно сработать и распечатать содержимое CSV-файла на консоли.

App.js

var RNFS = require('react-native-fs');

Linking.getInitialURL().then((url) => {
  if (url) {
    RNFS.readFile(url).then((data) => {
      console.log(data);
    }

}).catch(err => console.error('An error occurred', err));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...