2016-10-10 2 views
2

У меня есть действия редукции, которые используются в сети. Мы используем эти действия, чтобы реагировать на собственный проект, чтобы мы могли делиться логикой между сетью и родной и изменять только компоненты.React Native File constructor

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

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

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

Как создать File в режиме реагирования?

+1

Используйте [реагировать-нативной выборки-блоб] (https://github.com/wkh237/react-native-fetch-blob/blob/master/README.md) веб-полипол. – Xeijp

ответ

0

AFAIK вы не можете создать файл даже в Интернете, даже если вы попытаетесь получить ключи объекта File с помощью 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 может быть полезным

Смежные вопросы