Загрузка изображения в Firebase с помощью React-Native - PullRequest
0 голосов
/ 06 июня 2018

Я использую этот метод, чтобы попытаться загрузить изображение в Firebase с моим приложением React-Native, потому что оно кажется очень распространенным примером в Интернете, однако я думаю, что оно довольно старое, и я подозреваю, что оно больше не работает наболее новые версии React-Native.

Может кто-нибудь показать мне правильный способ сохранения изображений в хранилище Firebase, спасибо!

 const uploadImage = (uri, imageName, mime = 'image/jpg') => { 

    return new Promise((resolve, reject) => {
      const uploadUri = Platform.OS === 'ios' ? uri.replace('file://', '') 
  : uri;
      let uploadBlob = null
      const imageRef = firebase.storage().ref('images/').child(imageName)
      fs.readFile(uploadUri, 'base64')
        .then((data) => {
          return Blob.build(data, {type: `${mime};BASE64`})
        })
        .then((blob) => {
          uploadBlob = blob
          return imageRef.put(blob, {contentType: mime})
        })
        .then(() => {
          uploadBlob.close()
          return imageRef.getDownloadURL()
        })
        .then((url) => {
          resolve(url)
        })
        .catch((error) =>{reject(error)})
    })
}

1 Ответ

0 голосов
/ 08 июня 2018

Вы можете просто использовать метод putFile.

Вот мой FirebaseStorageService с методом saveImage (я использую RN 0.53 и response-native-firebase 4.1.0):

saveImage(ref, image, imageName, onSuccess, onError){
    LOG.debug("FirebaseStorageService :: saveImage ", {ref:ref, image:image, imageName:imageName});

    var firebaseStorageRef = firebase.storage().ref(ref);
    const imageRef = firebaseStorageRef.child(imageName + ".jpeg");

    LOG.debug("FirebaseStorageService :: imageRef ", {imageRef:imageRef});


    imageRef.putFile(image.path, {contentType: 'image/jpeg'}).then(function(){
        return imageRef.getDownloadURL();
    }).then(function(url){
        LOG.debug("Image url", {url:url});
        onSuccess(url);
    }).catch(function(error){
        LOG.error("Error while saving the image.. ", error);
        onError(error);
    });
}

Это изображение, возвращаемое response-native-image-crop-picker .Пользователь может выбирать между открытой камерой и открытой галереей, и он возвращает объект изображения.

Свойство path объекта изображения - это просто строка, подобная "file: // .." для Android и "/ Users /... "для iOS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...