2016-04-18 1 views
8

Я собираюсь преобразовать b64 в blob в реакцию native.Как преобразовать base64 в Blob in React Native?

Но я получаю ошибку на функции atob.

Вот мои коды.

var binary = atob(this.state.avatarSource.uri.split(',')[1]); 
var byteNumbers = new Array(binary.length); 

for(var i = 0; i < binary.length; i++) { 
    byteNumbers.push(binary.charCodeAt(i)); 
} 
var file = new Blob([new Uint8Array(byteNumbers)], {type: 'image/jpeg'}); 

У кого-нибудь есть идеи?

+0

ли вам когда-нибудь выяснить это? У меня такая же проблема – pomo

+0

Возможный дубликат [Создание Blob из строки base64 в JavaScript] (http://stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in -javascript) – Endless

ответ

2

Я получаю основание 64 изображения. После этого я показываю его из-под кода. Надеюсь, что это может помочь вам

let imgSrc = "data:image/png;base64," + base64ImageData; 
<Image source={{uri: imgSrc, scale: 1}} style={{ height: 80, width: 80}}/> 
6

Не используйте atob или btoa, который работает только в Debug Mode.

Потому что, когда вы используете режим отладки, вы запускаете свой JS-код в браузере (который должен быть V8), тогда как если вы собираетесь запустить приложение в рабочем режиме, оно использует JavascriptCore, у которого нет atob или btoa осуществления.

Вы можете использовать base-64 для преобразования данных в кодировку BASE64, но я не уверен, может ли он создать для вас правильный объект Blob.

С моей точки зрения, Blob является мостом между контекстом JS и файловой системой, React Native еще не имеет API файловой системы, поэтому вы можете получить объект Blob, но он всегда пуст.

Если вы собираетесь создать образ из массива содержит число, вы посмотрите на react-native-fetch-blob, который является проектом я работаю, надеюсь, он может решить такого рода проблемы :)