Конструктор файлов React Native

#javascript #android #reactjs #react-native

#javascript #Android #reactjs #react-native

Вопрос:

У меня есть действия redux, которые используются в Интернете. Мы используем эти действия в проекте react native, чтобы мы могли совместно использовать логику между web и native и изменять только компоненты.

Одно из этих действий (загрузка изображения) принимается File в качестве параметра. Мы выяснили, как получить информацию об изображении в react native — мы используем react-native-image-picker . Когда пользователь выбирает изображение, он возвращает ответ со всеми данными.

 let file = new File([atob(response.data)],
      response.fileName,
      {type: response.type})
  

Однако это не работает в react native, в нем нет File конструктора, который есть в Интернете. Я не могу использовать некоторые альтернативы File , потому что ожидает redux-действие, которое совместно используется между web и native File .

Как я могу создать File в react-native?

Комментарии:

1. Используйте веб-полифилл react-native-fetch-blob .

Ответ №1:

AFAIK, вы не можете создать файл даже в Интернете, более того, если вы попытаетесь получить ключи файлового объекта, Object.keys() вы ничего не получите, я не знаю, потому что это означает представление файла в браузере, но то, что вы действительно можете использовать Blob , этоДвоичный объектный файл большого размера, в основном файл в памяти, если вы получаете данные от конечной точки, используйте:

 fetch('/endpoint')
.then(res) {
  res.blob()
}
.then(blob) {
 // Do whatever you want with your blob
}
  

если нет, вы можете сделать new Blob([response.data], {type: response.type})
Обратите внимание, что у больших двоичных объектов нет имен, вы обработаете это с помощью библиотеки позже

Эта библиотека https://github.com/wkh237/react-native-fetch-blob и документация https://github.com/wkh237/react-native-fetch-blob/wiki/File-System-Access-API может быть полезно

Комментарии:

1. С момента вашего ответа прошло много времени. Теперь вы можете в Chrome / Firefox / Edgium / Opera / Safari! developer.mozilla.org/en-US/docs/Web/API/File/File