Загрузка хранилища Firebase в React с помощью вызова putString

Я настраиваю эту ветку, чтобы уточнить, работает ли метод putString хранилища firebase или не работает в React-native.

Судя по тому, что я искал, в настоящее время нет возможности загрузить типы файлов или больших двоичных объектов в хранилище Firebase с помощью метода put.

React Native не поддерживает типы File и Blob, поэтому загрузка хранилища Firebase не будет работать в этой среде. Однако загрузка файлов работает.

ИСТОЧНИК: Блог Firebase

Таким образом, этот призыв

firebase.storage().ref()
.child(userID)
.put(new File(['this is a small amount of data'], 'sample-text.txt', { type: "text/plain" }), { type: "text/plain" })
.then(p => {console.log(p)})
.catch(p => {console.log(p)})

не работает и приходит ответ

код: «хранилище / неизвестно» сообщение: «Хранилище Firebase: произошла неизвестная ошибка, пожалуйста, проверьте полезные данные ошибки для ответа сервера». name: "FirebaseError" serverResponse: "Составное тело не содержит двух или трех частей."

Тем не менее, есть еще один вариант загрузки данных в хранилище Firebase, используя метод putString хранилища Firebase. Что работает с простой строкой. Но даже если я использую этот метод для загрузки. Я получаю тот же ответ сервера, что и раньше.

firebase.storage()
.ref()
.child(userID)
.putString('string')
.then(p => {console.log(p)})
.catch(p => {console.log(p)});

Бу из того, что я узнал из этого ответа . Способ putString должен работать.

Что я делаю неправильно? У меня код отлично работает в React. Каждый раз, когда я вставляю в React-native. Перестает работать.


person jankoritak    schedule 26.08.2016    source источник
comment
Попробуйте react-native-fetch-blob, библиотека делает это возможным для загрузки файла в React Native. Он также предоставляет образец приложения.   -  person Ven Jest    schedule 26.08.2016
comment
В итоге я попробовал как react-native-fetch-blob, так и react-native-firestack. Я не смог заставить ни то, ни другое работать ..   -  person jankoritak    schedule 29.08.2016
comment
groups.google.com/forum / #! Searchin / firebase-talk / react $ 20native / Хранилище Firebase в настоящее время не поддерживается в React Native   -  person sdfsdf    schedule 30.08.2016


Ответы (1)


Я только что попробовал react-native-fetch-blob, как ранее прокомментировал Вен: и мне удалось заставить его работать, попробуйте использовать этот фрагмент из индексный файл в примере:

1) Перед объявлением класса:

import RNFetchBlob from 'react-native-fetch-blob';
const Blob = RNFetchBlob.polyfill.Blob;
window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest;
window.Blob = Blob;

2) Внутри метода хранения:

let filePath = 'YOUR/FILE/PATH';
let fileName = 'file_name.jpg';
let rnfbURI = RNFetchBlob.wrap(filePath);
// create Blob from file path
Blob
.build(rnfbURI, { type : 'image/png;'})
.then((blob) => {
  // upload image using Firebase SDK
  firebase.storage()
    .ref('images')
    .child(fileName)
    .put(blob, { contentType : 'image/jpg' })
    .then((snapshot) => {
      console.log('Uploaded', snapshot.totalBytes, 'bytes.');
      console.log(snapshot.metadata);
      var url = snapshot.metadata.downloadURLs[0];
      console.log('File available at', url);
    }).catch(function(error) {
      console.error('Upload failed:', error);
    });
person MrBrownser    schedule 30.08.2016
comment
привет, я использую средство выбора изображений для выбора изображения со своего телефона. средство выбора изображений предоставляет ответ: {height: 33, origURL: assets-library: //asset/asset.JPG? id = 9F983DBA-EC35-42B8-8773-B597CF782EDD & ext = JPG, долгота: -17,54892833333333, имя файла: IMG_0003.JPG, uri: file: ///Users/mac/Library/Developer/CoreSimulator/…temfiles/ADC7B1EA-93A0-4A25-B7CA-342BE3EF58BE.jpg,… RNFetchBlob.wrap () загружает только origURL, а не uri, на самом деле я хочу загрузить изображение, используя данные или uri, потому что мне нужно уменьшить размер изображения перед загрузкой. Помогите, пожалуйста - person priya.vr; 14.12.2017